Нарича се естествен ред :
natural orderРедът, в който базата данни препраща към документи на диска. Това е редът на сортиране по подразбиране. Вижте
$naturalиReturn in Natural Order.
Това потвърждава, че като цяло ги получавате в същия ред, който сте поставили, но това не е гарантирано – както забелязахте.
Връщане в естествен ред
$naturalпараметърът връща елементи според техния естествен ред в базата данни. Това подреждане е вътрешна функция за внедряване и не трябва да разчитате на никаква конкретна структура в него.Използване на индекс
Заявки, които включват сортиране по
$naturalпоръчайте нене използвайте индекси, за да изпълните предиката на заявката със следното изключение:Ако предикатът на заявката е условие за равенство на_idполе{ _id: <value> }, след това заявката със сортиране по$naturalпоръчката може да използва_idиндекс.MMAPv1
Обикновено естественият ред отразява реда на вмъкване със следното изключение за MMAPv1 механизма за съхранение. За механизма за съхранение MMAPv1 естественият ред не отразява реда на вмъкване, ако документите се преместят поради нарастване на документа или операциите за премахване освобождават място, което след това се заема от нововмъкнатите документи.
Очевидно, подобно на споменатите документи, не трябва да не разчитайте на този ред по подразбиране (Това подреждане е вътрешна функция за внедряване и не трябва да разчитате на никаква конкретна структура в него. ).
Ако трябва да сортирате нещата, използвайте решенията за сортиране.
По принцип следните две извиквания трябва да връщат документи в същия ред (тъй като редът по подразбиране е $natural ):
db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()
Ако искате да сортирате по друго поле (напр. name ) можете да направите това:
db.mycollection.find().sort({ "name": 1 })