Cuando ejecutamos una consulta de Mongo find () sin ningún orden de clasificación especificado, ¿qué utiliza la base de datos internamente para ordenar los resultados?
Según la documentación en el sitio web de mongo :
Cuando se ejecuta find () sin parámetros, la base de datos devuelve objetos en orden natural hacia adelante.
Para tablas estándar, el orden natural no es particularmente útil porque, aunque el orden a menudo se acerca al orden de inserción, no se garantiza que lo sea. Sin embargo, para las colecciones limitadas, se garantiza que el orden natural será el orden de inserción. Esto puede ser muy útil.
Sin embargo, para las colecciones estándar (colecciones sin límite), ¿qué campo se utiliza para ordenar los resultados? ¿Es el campo _id o algo más?
Editar:
Básicamente, supongo que estoy tratando de llegar a eso si ejecuto la siguiente consulta de búsqueda:
db.collection.find({"x":y}).skip(10000).limit(1000);
En dos momentos diferentes en el tiempo: t1 y t2 , obtendré diferentes conjuntos de resultados:
- ¿Cuándo no ha habido escrituras adicionales entre t1 y t2?
- ¿Cuándo ha habido nuevas escrituras entre t1 y t2?
- ¿Hay nuevos índices que se han agregado entre t1 y t2?
Ejecuté algunas pruebas en una base de datos temporal y los resultados que obtuve son los mismos ( Sí ) para los 3 casos, pero quería estar seguro y estoy seguro de que mis casos de prueba no fueron muy completos.
{createdAt: -1}
) para implementar patrones de IU optimistas (actualizar listas de datos en la caché sin esperar la respuesta del servidor después de crear / actualizar / eliminar). De lo contrario, no puede coincidir con el orden optimista del lado del cliente y el orden de respuesta del servidor.Se devuelve en el orden almacenado (orden en el archivo), pero no se garantiza que estén en el orden insertado. No están ordenados por el campo _id. A veces puede parecer que está ordenado por el orden de inserción, pero puede cambiar en otra solicitud. No es confiable.
fuente