Bu basit önek sorgu ile sıkışıp kaldım.Regex ve sort ile Mongodb basit önek sorgu yavaş
940 Millis
: Ben Sonuçları sıralamak çalıştığınızda önek regex biçimini kullanarak oldukça iyi bir performans elde edebilirsiniz Mongo docs durumu (/^a /), sorgu oldukça yavaş olmasına rağmen db.posts.find ({hashtag'ler:/^ noticias /}). sınırı (15), .sort ({sıralaması: -1}).. ipucu ('hashtags_1_rank_-1')()
{
"cursor" : "BtreeCursor hashtags_1_rank_-1 multi",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 142691,
"nscanned" : 142692,
"nscannedObjectsAllPlans" : 142691,
"nscannedAllPlans" : 142692,
"scanAndOrder" : true,
"indexOnly" : false,
"nYields" : 1,
"nChunkSkips" : 0,
"millis" : 934,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticiat"
],
[
/^noticias/,
/^noticias/
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
açıklar
Ancak, aynı sorgunun sıralanmamış sürümü süper hızlı:
0 Millis
: bir çeşit regex ve kaldırırsanızdb.posts.find.. ({Hashtag'ler:/^ noticias /}) sınırı (15) .hint ('hashtags_1_rank_-1') açıklar()
{
"cursor" : "BtreeCursor hashtags_1_rank_-1 multi",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 15,
"nscanned" : 15,
"nscannedObjectsAllPlans" : 15,
"nscannedAllPlans" : 15,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticiat"
],
[
/^noticias/,
/^noticias/
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
sorgu hızlıdır
0 Millis
db.posts.find ({Hashtag'ler: 'noticias'}) sınırı (15) .sort ({sıralaması: -1}).. Ipucu ('hashtags_1_rank_-1').()
{
"cursor" : "BtreeCursor hashtags_1_rank_-1",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 15,
"nscanned" : 15,
"nscannedObjectsAllPlans" : 15,
"nscannedAllPlans" : 15,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticias"
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
Bu regex ikisini de kullanarak gibi görünüyor ve sıralama Mongo çok fazla kayıt tarama yapar açıklar. Ancak, düzenli ifadeyi kullanmazsam, sıralama yalnızca 15'i tarıyor. Burada neyin var?
jaime, "scanAndOrder" ın yavaşlıktan sorumlu olduğuna inanıyorum. [Andre'nin cevabı] 'na (http://stackoverflow.com/questions/11871187/removing-scanandorder-true-in-my-mongodb-query-result) bakmak isteyebilirsiniz. konu. – slee