Chama-se ordem natural :
natural order
A ordem na qual o banco de dados se refere aos documentos no disco. Esta é a ordem de classificação padrão. Veja$natural
eReturn in Natural Order
.
Isso confirma que, em geral, você os obtém na mesma ordem em que inseriu, mas isso não é garantido – como você notou.
Retorno em ordem natural
O$natural
O parâmetro retorna itens de acordo com sua ordem natural no banco de dados. Essa ordenação é um recurso de implementação interna e você não deve confiar em nenhuma estrutura específica dentro dela.
Uso do índice
Consultas que incluem uma classificação por$natural
ordem não use índices para preencher o predicado da consulta com a seguinte exceção:se o predicado da consulta for uma condição de igualdade no_id
campo{ _id: <value> }
, então a consulta com a classificação por$natural
pedido pode usar o_id
índice.
MMAPv1
Normalmente, a ordem natural reflete a ordem de inserção com a seguinte exceção para o mecanismo de armazenamento MMAPv1. Para o mecanismo de armazenamento MMAPv1, a ordem natural não reflete a ordem de inserção se os documentos forem realocados devido ao crescimento do documento ou as operações de remoção liberarem espaço que será ocupado por documentos recém-inseridos.
Obviamente, como os documentos mencionados, você não confie nessa ordem padrão (Esta ordenação é um recurso de implementação interna e você não deve confiar em nenhuma estrutura específica dentro dela. ).
Se você precisar classificar as coisas, use as soluções de classificação.
Basicamente, as duas chamadas a seguir devem retornar documentos na mesma ordem (já que a ordem padrão é
$natural
):db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()
Se você quiser classificar por outro campo (por exemplo,
name
) você pode fazer isso:db.mycollection.find().sort({ "name": 1 })