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

Редът на документите за връщане на Mongodb find

Документите се съхраняват в естествен ред

Документите се съхраняват в низходящ ред според датата. Така колекцията има 20140731 като първи документ.

Освен ако не използвате ограничена колекция, няма гаранция за подреждането на документи на диска (наричано още естествен ред).

Изтриванията и преместванията на документи (когато даден документ надвишава разпределеното му пространство за запис) създават място в свободния списък, което ще бъде използвано повторно.

Ето един бърз пример, който трябва да демонстрира това в mongo обвивка:

// Start with an empty database & collection
use demodb; db.dropDatabase(); db.order.drop()

// Add some test data
for (i=0; i<1000; i++) {
    db.order.insert({'i': i})
}

// Looks like insertion order! (0..9)
db.order.find({}).limit(10);

// Pause 5s for effect :)
sleep(5000);

// Remove half the entries
db.order.remove({ i: { $lt: 500 }})

// Re-add the missing entries
for (i=0; i<500; i++) {
    db.order.insert({'i': i})
}

// Not the entries you expected .. space from deleted records was reused
db.order.find({}).limit(10)

// Clean up demodb
db.dropDatabase()

Последователност на резултатите

Когато използвам командата find с филтри {$gte :20140720, $lte :20140731}, mongodb връща обратно заявката във възходящ ред на полето "date".

Ако за заявка се използва индекс, документите се връщат в реда, в който са намерени в индекса. Трябва да се възползвате от това, когато създавате вашите индекси за често срещани заявки (вижте:Използване на индекси за сортиране на резултатите от заявките).

FYI, прост индекс (напр. на {date:1} ) може да се използва за връщане на резултатите, сортирани във възходящ или низходящ ред.

Сортиране по ObjectID

Ако използвате по подразбиране ObjectID на MongoDB за _id , можете да сортирате по { _id: 1 } за приблизителен ред на вмъкване от първите 4 байта на ObjectID включете времева марка. Ако искате да използвате това за сортиране на заявка въз основа на date и приблизителен ред на вмъкване, ще осигурите индекс на {date:1, _id:1} .

Обърнете внимание, че ObjectID s обикновено се генерират от клиентския драйвер, така че ако имате отклонение на часовника на вашите сървъри на приложения (или _id се създава известно време преди вмъкването на документа) ObjectID s може да не отразява строго "реда на вмъкване", както се вижда от сървъра. Ако точността на реда за вмъкване е много важна, обикновено е възможно да се генерира _id от страна на сървъра (подходът варира в зависимост от драйвера).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да преоразмеря колекция, ограничена от mongodb, без да загубя данни?

  2. Създайте база данни в MongoDB

  3. Намерете използването на _id, което не работи с агрегиране

  4. Как да вмъкнете няколко елемента наведнъж в колекция MongoDB

  5. Съхранявайте датата в MongoDB, без да отчитате часовата зона