Wenn ich Ihren Punkt verstanden habe, könnte dies helfen:
Angenommen, Sie haben diese Dokumente als Muster
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Schritt 1:Sie haben nur einen Index für filed1 (Name des Index Feld1_1 )}:Führen Sie Folgendes durch:db.test3.find({field1:1}).sort({field2:1})
der Mongo verwendet field1_1 Index zum Suchen im Dokument. das Ergebnis von .explain() ist:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Schritt 2:Fügen Sie Ihren zusammengesetzten Index hinzu und nennen Sie ihn field1_1_field2_1 , jetzt haben Sie 2 Index für Feld 1.
Führen Sie find().sort()
aus Abfrage haben Sie
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Fazit:
wenn Sie db.test3.find({field1:1}).sort({field2:1})
verwenden verwendet der Mongo field1_1_field2_1
index.
wenn Sie db.test3.find({field1:1})
verwenden verwendet der Mongo field1_1
index.
In Ihrem Fall, wenn Sie nur field1_1_field2_1 haben index und Sie führen db.test3.find({field1:1})
aus verwendet der Mongo field1_1_field2_1
auch indexieren.