Jika saya mengerti maksud Anda, ini mungkin membantu:
Dengan asumsi Anda memiliki dokumen-dokumen ini untuk sampel
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Langkah 1:Anda memiliki indeks hanya untuk filed1 (nama indeks bidang1_1 )}:lakukan :db.test3.find({field1:1}).sort({field2:1})
mongo menggunakan field1_1 indeks untuk mencari di dokumen. hasil dari .explain() adalah:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Langkah 2:tambahkan indeks gabungan Anda, beri nama field1_1_field2_1 , sekarang Anda memiliki 2 indeks untuk bidang 1.
lakukan find().sort()
kueri, Anda akan memiliki
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Kesimpulan:
jika Anda menggunakan db.test3.find({field1:1}).sort({field2:1})
, mongo akan menggunakan field1_1_field2_1
indeks.
jika Anda menggunakan db.test3.find({field1:1})
, mongo akan menggunakan field1_1
indeks.
Saya kasus Anda, Jika Anda baru saja field1_1_field2_1 indeks dan Anda melakukan db.test3.find({field1:1})
, mongo akan menggunakan field1_1_field2_1
indeks juga.