Ceci est de MongoDB docs:MongoDB :: Pourquoi les index de documents incorporés Ne pas retourner les documents dans l'ordre inverse?
db.factories.insert({ name: "xyz", metro: { city: "New York", state: "NY" } });
db.factories.ensureIndex({ metro : 1 });
// this query can use the above index:
db.factories.find({ metro: { city: "New York", state: "NY" } });
//As well as this
db.factories.find({ metro: { $gte : { city: "New York" } } });
// But this query will not return the document because the order of the fields is significant and doesn't match in this case
db.factories.find({ metro: { state: "NY" , city: "New York" } });
Pourquoi l'ordre des documents importants? Parce que dans JSON et BSON l'ordre des champs fait la différence lors de la sérialisation.
pour « Parce que dans JSON et BSON l'ordre de les champs font la différence "? – CamelCamelCamel
@Radagaisus c'était une déclaration mal formée. Je voulais dire qu'il fait une différence dans ce contexte (sérialisation et indexation). BSON ou JSON lui-même n'applique aucun ordre et la sémantique de comparaison d'objet est mise en œuvre. – pingw33n
"Puisqu'il n'y a aucun moyen de normaliser l'ordre des champs avant de rechercher le document incorporé dans l'index" ... juste une idée: que diriez-vous de trier les champs par ordre alphabétique (du nom du champ)? –