Nej, det är inte alls dåligt och faktiskt det inbyggda ObjectId
är ganska stor i indexet så om du tror att du har något bättre är du mer än välkommen att ändra standardvärdet för _id
fältet till vad som helst.
Men, och det här är ett stort men , det finns några överväganden när man bestämmer sig för att gå bort från det standardformulerade ObjectId
, speciellt när du använder autoincrementing _ids som visas här:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field
Multi threading är inte ett så stort problem eftersom findAndModify
och atomlåsen kan faktiskt ta hand om det, men då stöter du bara på ditt första problem. findAndModify
är inte den snabbaste funktionen eller den lättaste och det har märkts betydande prestandasänkningar när du använder den regelbundet.
Du måste också överväga omkostnader för att göra detta själv ändå, även utan findAndModify
. För varje insert behöver du en extra fråga. Föreställ dig att du har ett unikt id som du måste fråga om unikheten för varje gång du vill infoga. Så småningom kommer din insättningshastighet att sjunka till en genomsökning och din låstid kommer att byggas upp.
Naturligtvis ObjectId
är riktigt bra på att vara unik utan att behöva kontrollera eller formulera sin egen unikhet genom att vidröra databasen innan den infogas, därför har den inte denna overhead.
Om du fortfarande känner att ett heltals _id passar ditt scenario, gå för det, men kom ihåg de overhead som beskrivs ovan.