sql >> Database >  >> NoSQL >> MongoDB

Verschil tussen het opslaan van een ObjectId en zijn tekenreeksvorm, in MongoDB

Ik persoonlijk geef je code de schuld. Ik kan dit prima omzeilen in mijn toepassingen door op de juiste manier te coderen. Ik converteer naar string in code om te vergelijken en ik zorg ervoor dat alles dat lijkt op een ObjectId wordt feitelijk gebruikt als een ObjectId .

Het is goed om te weten dat tussen de ObjectId (http://docs.mongodb.org/manual/reference/object-id/) en het is hex-representatie, er is in feite 12 bytes verschil, de ObjectId zijnde 12 bytes en de hex-representatie is 24.

Het gaat niet alleen om opslagefficiëntie, maar ook om indexen; niet alleen omdat ze kleiner zijn, maar ook omdat de ObjectId kan op een speciale manier worden gebruikt om ervoor te zorgen dat alleen delen van de index worden geladen; de onderdelen die worden gebruikt. Dit wordt het meest merkbaar bij het invoegen, waarbij alleen het laatste deel van die index hoeft te worden geladen om uniek te zijn. Je kunt dergelijk gedrag niet garanderen met zijn hexadecimale weergave.

Ik raad u ten zeerste aan om de OjbectId . niet te gebruiken 's hexadecimale representatie. Als u "uw leven gemakkelijker wilt maken", kunt u beter een andere _id maken die kleiner is maar op de een of andere manier net zo uniek en indexvriendelijk is.



  1. Hoeveel sneller is Redis dan mongoDB?

  2. Waarom slagen mijn MongooseJS ObjectIds niet voor de gelijkheidstest?

  3. Hoe te herstellen van een MongoDB-terugdraaiing?

  4. .NET Core singleton-service injecteren in een andere singleton-service