Нарича се естествен ред :
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 })