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

Může MongoDB a jeho ovladače zachovat pořadí prvků dokumentu

Od verze 2.6 MongoDB zachovává pořadí polí, kde je to možné. Nicméně _id pole je vždy na prvním místě, přejmenování polí může vést k přeuspořádání. Obecně bych se však snažil nespoléhat na takové detaily. Jak již zmiňuje původní otázka, je třeba zvážit i další vrstvy, z nichž každá musí poskytovat určitou záruku stability objednávky...

Původní odpověď:

Ne, MongoDB neručí za řazení polí :

Zejména aktualizace na místě, které mění velikost dokumentu, obvykle změní pořadí polí. Pokud například $set pole, jehož stará hodnota byla typu číslo a nová hodnota je NumberLong , pole se obvykle přeuspořádají.

Pole však správně zachovávají pořadí:

[ {'key1' : 'value1'}, {'key2' : 'value2'}, ... ]

Vůbec nechápu, proč je to "ošklivý" a "nafoukaný". Ukládání seznamu složitých objektů nemůže být jednodušší. Nicméně zneužívání objektů jako seznamů je rozhodně ošklivé:Objekty mají asociativní sémantiku pole (tj. může existovat pouze jedno pole daného jména), zatímco seznamy/pole nikoli:

// not ok:
db.foo2.insert({"foo" : "bar", "foo" : "lala" });
db.foo2.find();
{ "_id" : ObjectId("4ef09cd9b37bc3cdb0e7fb26"), "foo" : "lala" }

// a list can do that
db.foo2.insert({ 'array' : [ {'foo' : 'bar'}, { 'foo' : 'lala' } ]});
db.foo2.find();
{ "_id" : ObjectId("4ef09e01b37bc3cdb0e7fb27"), "array" : 
      [ { "foo" : "bar" }, { "foo" : "lala" } ] }

Mějte na paměti, že MongoDB je databáze objektů, nikoli úložiště klíč/hodnota.



  1. Java:Jak vložit hashmap do MongoDB?

  2. Nativní NodeJS + Mongo – před dotazem zkontrolujte, zda kolekce existuje

  3. Ukládání vnořených javascriptových objektů v redis - NodeJS

  4. Chyba MongoDB na mongos:příliš mnoho pozičních možností