sql >> Databáze >  >> NoSQL >> MongoDB

MongoDb:Výhoda použití ObjectID oproti řetězci obsahujícímu Id?

Největším důvodem je, že ObjectID mají 12 bajtů, zatímco ekvivalentní řetězec má 24 bajtů. U dostatečně velké sbírky se těch 12 bajtů uložených na ID skutečně sečte! Tato ID také znamenají méně bajtů přenášených po drátě při čtení nebo zápisu dokumentu.

Někteří ODM navíc očekávají ObjectID pro externí odkazy na dokumenty a mohou být zmateni řetězcovými verzemi ID. Nejsem dostatečně obeznámen s PHP ODM, abych řekl, zda by se to mohlo konkrétně týkat vás.

Pokud jde o věci API, pravděpodobně byste měli provést normalizaci dat před jejich odesláním klientovi, protože protože Mongo nevynucuje schéma, můžete mít v daném poli doslova jakýkoli druh dat, takže můžete mít některé dokumenty, které mají ID řetězců, a jiné, které mají ID BSON, a vaše API je ochotně pošle klientovi, ale jeden nebo druhý by mohl způsobit poškození. V tomto konkrétním případě byste měli ve svých dokumentech použít BSON ObjectID a poté je přetypovat do řetězců ve vašem výstupu API.



  1. Meteor:nahrávání souboru z klienta do kolekce Mongo vs souborový systém vs GridFS

  2. Aggregate $lookup Celková velikost dokumentů v odpovídajícím kanálu překračuje maximální velikost dokumentu

  3. Redis:Součet SKÓRE v tříděné sadě

  4. vytvoření mangoose schématu