Lorsque nous exécutons une requête Mongo find () sans aucun ordre de tri spécifié, qu'est-ce que la base de données utilise en interne pour trier les résultats?
Selon la 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 tables standard, l'ordre naturel n'est pas particulièrement utile car, bien que l'ordre soit souvent proche de l'ordre d'insertion, il n'est pas garanti. Cependant, pour les collections limitées, l'ordre naturel 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 champ _id ou autre chose?
Éditer:
Fondamentalement, je suppose que ce que j'essaie d'arriver, c'est que si j'exécute la requête de recherche suivante:
db.collection.find({"x":y}).skip(10000).limit(1000);
À deux moments différents: t1 et t2 , vais-je obtenir des ensembles de résultats différents:
- Quand il n'y a pas eu d'écritures supplémentaires entre t1 et t2?
- Quand il y a eu de nouvelles écritures entre t1 et t2?
- Il y a de nouveaux index qui ont été ajoutés entre t1 et t2?
J'ai effectué des 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.