MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como o MongoDB ordena seus documentos em uma coleção?


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 e Return 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 })