आज मैंने देखा है कि जिस क्रम में $ lt और $ gt ऑपरेटरों को दिया गया है, वह मोंगोडीबी 2.0.2 में महत्वपूर्ण है।
मेरे पास गेम का डेटाबेस है। "प्लेयर" दोनों खिलाड़ियों का प्रतिनिधित्व करने वाले दो तारों की एक सरणी है, "एंड एटीएमएस" गेम समाप्त होने पर एक टाइमस्टैम्प है।
db.games.ensureIndex({player:1,endedAtMS:-1})
मेरे खेल है जो एक निश्चित समय सीमा में खत्म कर रहे थे, जब तक आदेश दिया के 30 प्राप्त करने के लिए खेल जहां समाप्त हो गया, मुझे क्या करना:
db.games.find({ "player" : "Stefan" ,
"endedAtMS" : { "$lt" : 1321284969946 ,
"$gt" : 1301284969946}}).
sort({endedAtMS:-1}).
limit(30).
explain()
{
"cursor" : "BtreeCursor player_1_endedAtMS_-1",
"nscanned" : 30,
"nscannedObjects" : 30,
"n" : 30,
"millis" : 0,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : true,
"indexOnly" : false,
"indexBounds" : {
"player" : [
[
"Stefan",
"Stefan"
]
],
"endedAtMS" : [
[
1321284969946,
-1.7976931348623157e+308
]
]
}
}
सभी लगता है मैं इस सूचकांक बनाया है बढ़िया कार्य करना।
db.games.find({ "player" : "Stefan" ,
"endedAtMS" : { "$gt":1301284969946,
"$lt" : 1321284969946}}).
sort({endedAtMS:-1}).
limit(30).
explain()
{
"cursor" : "BtreeCursor player_1_endedAtMS_-1",
"nscanned" : 126,
"nscannedObjects" : 126,
"n" : 30,
"millis" : 1,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : true,
"indexOnly" : false,
"indexBounds" : {
"player" : [
[
"Stefan",
"Stefan"
]
],
"endedAtMS" : [
[
1.7976931348623157e+308,
1301284969946
]
]
}
}
आप देख सकते हैं 126 डॉक्स परिणाम के लिए 30 डॉक्स पाने के लिए स्कैन किया जा करने की जरूरत है: हालांकि जब मैं प्रश्न में $ लीटर और $ जीटी का क्रम बदलने के ऊपर मैं इस मिलता है। यदि आप समझाने के आउटपुट में इंडेक्सबाउंड पर एक नज़र डालें तो ऐसा लगता है कि केवल पहले ऑपरेटर का उपयोग इंडेक्स में खोज स्थान को सीमित करने के लिए किया जाता है।
मुझे क्या याद आती है? खोज स्थान को सीमित करने के लिए मोंगो केवल एक ऑपरेटर का उपयोग क्यों कर रहा है?
अच्छा खोज! आइए 10gen लोगों के लिए प्रतीक्षा करें :) –
मैं 2.0.3 के साथ एक ही समस्या (बग?) में आया हूं। [मेरा प्रश्न] देखें (http://stackoverflow.com/questions/9776383/why-are-any-objects-being-scanned-here)। 10gen - हम आपसे प्यार करते हैं - कृपया इसे समझाएं! –
मुझे आश्चर्य है कि 10gen लोग कितनी जल्दी इसे समझ सकते हैं ... एक भावना है कि यह 2.0.4 – Baba