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.
{createdAt: -1}
) est nécessaire pour implémenter des modèles d'interface optimiste (mise à jour des listes de données dans le cache sans attendre la réponse du serveur après une création / mise à jour / suppression). Sinon, vous ne pouvez pas faire correspondre l'ordre optimiste côté client et l'ordre de réponse du serveur.Il est retourné dans l'ordre stocké (ordre dans le fichier), mais il n'est pas garanti qu'ils soient dans l'ordre inséré. Ils ne sont pas triés par le champ _id. Parfois, il peut sembler être trié par ordre d'insertion, mais cela peut changer dans une autre demande. Ce n'est pas fiable.
la source