2013-07-07 10 views
28

मैं संग्रह से सबसे हाल के दस्तावेज चुनना चाहता हूं। इस प्रश्न का उत्तर mongodb: how to get the last N records? बताता है कि क्वेरी में परिचालनों का क्रम महत्वपूर्ण है। हालांकि यह मामला प्रतीत नहीं होता है (शायद चूंकि मोंगो 2.4 जारी किया गया था)। मैंने निम्नलिखित दोनों प्रश्नों का प्रयास किया है और ऐसा लगता है कि मोंगो पहली बार सीमा लागू करता है और फिर इस तरह का प्रदर्शन करता है।परिणाम को सीमित करने से पहले आप संग्रह को सॉर्ट करने के लिए मोंगो को कैसे बताते हैं?

क्वेरी 1

myCollection.find().sort({ '$date': 1 }).limit(50, callback); 

क्वेरी 2

myCollection.find().limit(50).sort({ '$date': 1 }, callback); 

क्या पहले सॉर्ट और दूसरे को सीमित करने के मोंगो बताने के लिए सही क्वेरी हो सकता है?

संपादित करें --- यहाँ संग्रह

{ 
    _id: ObjectId("517eb0dddbab79c74700005d"), 
    audioFiles: [ 
    { 
     audioFileName: "C64FEFA8-DD43-40A1-8996-35948F3438BF-6896-0000027BD4A59D91", 
     audioLanguage: "English", 
     date: ISODate("2013-05-21T16:23:04.006Z"), 
     flag: "1", 
     user: "36C4DEB6-C13D-4211-94B5-CC4DD993ECF1-6896-00000278FA7B08EC" 
    }, 
    { 
     audioFileName: "994B6DF6-73B5-458F-912A-FF67A84534B2-23532-0000020000000000", 
     audioLanguage: "English", 
     date: ISODate("2013-05-27T10:45:04.107Z"), 
     flag: "1", 
     user: "9D7BB3F4-371B-4F2A-8DA2-0C4CE8B4E16D-974-0000000000000000" 
    } 
    ], 
    date: ISODate("2013-04-29T17:41:49.101Z"), 
    imageFileName: "SteamLokomotive0498", 
    random: 0.6750695831142366, 
    thumbFileName: "SteamLokomotive0498_150x150", 
    user: "62923D8E-00CE-4F0C-AECA-3010D78FC9CE-226-0000000000000000", 
    userLanguagePref: "Cantonese" 
} 

उत्तर

46

समस्या से एक नमूना दस्तावेज है कि आप date बजाय $date पर सॉर्ट करने के लिए की जरूरत है।

myCollection.find().sort({date: 1}).limit(50, callback); 

मोंगो परिणाम आपको कर्सर पर sort और limit फोन की परवाह किए बिना सीमित से पहले तरह लागू होता है।

दस्तावेज़ों में सबूत: link

संबंधित मुद्दे