Lorsque nous exécutons une requête Mongo find() sans spécifier d'ordre de tri, que la base de données utilise-t-elle en interne pour trier les résultats ?
Selon le documentation sur le site web de mongo :
Lors de l'exécution d'un find() sans paramètres, la base de données renvoie les objets dans l'ordre naturel avant.
Pour les tableaux standards, l'ordre naturel n'est pas particulièrement utile car, car, bien que l'ordre soit souvent proche de l'ordre d'insertion, il n'est pas garanti qu'il le soit. garanti. Cependant, pour les collections plafonnées, l'ordre naturel est est garanti comme étant l'ordre d'insertion. Cela peut être très utile.
Cependant, pour les collections standard (collections non plafonnées), quel champ est utilisé pour trier les résultats ? Est-ce le _id ou autre chose ?
Edit :
En gros, je suppose que ce que j'essaie d'obtenir, c'est que si j'exécute la requête de recherche suivante :
db.collection.find({"x":y}).skip(10000).limit(1000);
A deux moments différents dans le temps : t1 y t2 J'obtiendrai des résultats différents :
- Lorsqu'il n'y a pas eu d'écritures supplémentaires entre t1 et t2 ?
- Quand il y a eu de nouvelles écritures entre t1 & t2 ?
- Il y a de nouveaux index qui ont été ajoutés entre t1 & t2 ?
J'ai effectué quelques tests sur une base de données temporaire et les résultats que j'ai obtenus sont les mêmes ( Oui ) pour les 3 cas - mais je voulais être sûr et je suis certain que mes cas de test n'étaient pas très complets.