MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Могат ли MongoDB и неговите драйвери да запазят подреждането на елементите на документа

От версия 2.6 нататък MongoDB запазва реда на полетата, където е възможно. Въпреки това _id полето винаги е първо, преименуването на полета може да доведе до пренареждане. Въпреки това, като цяло бих се опитал да не разчитам на подробности като тази. Както се споменава в първоначалния въпрос, има и допълнителни слоеве за разглеждане, всеки от които трябва да предостави някаква гаранция за стабилността на поръчката...

Оригинален отговор:

Не, MongoDB не дава гаранции за подреждането на полетата :

По-специално, актуализациите на място, които променят размера на документа, обикновено ще променят реда на полетата. Например, ако $set поле, чиято стара стойност е от тип число, а новата стойност е NumberLong , полетата обикновено се пренареждат.

Масивите обаче запазват правилния ред:

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

Изобщо не виждам защо това е "грозно" и "надуто". Съхраняването на списък със сложни обекти не може да бъде по-лесно. Въпреки това злоупотребата с обекти като списъци определено е грозна:Обектите имат семантика на асоциативен масив (т.е. може да има само едно поле с дадено име), докато списъците/масивите нямат:

// 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" } ] }

Имайте предвид, че MongoDB е обектна база данни, а не хранилище за ключ/стойност.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Влезте с root идентификационни данни в Mongodb контейнер, създаден с помощта на Docker compose

  2. MongoDB:Не може да се свърже с нов главен набор от реплики

  3. Повишете подполета до най-високо ниво в проекцията, без да изброявате всички ключове

  4. Как да получите последно съобщение от чат разговор в mongodb

  5. 4 начина за изтриване на документ в MongoDB