sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo ordena MongoDB sus documentos en una colección?

Se llama orden natural :

natural order

El orden en que la base de datos hace referencia a los documentos en el disco. Este es el orden de clasificación predeterminado. Ver $natural y Return in Natural Order .

Esto confirma que, en general, los obtiene en el mismo orden en que los insertó, pero eso no está garantizado, como notó.

Regreso en Orden Natural

El $natural El parámetro devuelve elementos según su orden natural dentro de la base de datos. Este orden es una característica de implementación interna y no debe confiar en ninguna estructura particular dentro de él.

Uso del índice

Consultas que incluyen una ordenación por $natural ordenar no use índices para cumplir con el predicado de la consulta con la siguiente excepción:si el predicado de la consulta es una condición de igualdad en el _id campo { _id: <value> } , luego la consulta con la ordenación por $natural el pedido puede usar el _id índice.

MMAPv1

Normalmente, el orden natural refleja el orden de inserción con la siguiente excepción para el motor de almacenamiento MMAPv1. Para el motor de almacenamiento MMAPv1, el orden natural no refleja el orden de inserción si los documentos se reubican debido al crecimiento del documento o las operaciones de eliminación liberan espacio que luego ocupan los documentos recién insertados.

Obviamente, como se menciona en los documentos, no confíe en este orden predeterminado (Este orden es una función de implementación interna y no debe confiar en ninguna estructura particular dentro de él. ).

Si necesita clasificar las cosas, utilice las soluciones de clasificación.

Básicamente, las siguientes dos llamadas deberían devolver documentos en el mismo orden (dado que el orden predeterminado es $natural ):

db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()

Si desea ordenar por otro campo (p. ej., name ) puedes hacer eso:

db.mycollection.find().sort({ "name": 1 })