आप cursor.sort()
का उपयोग कर सकते हैं एक ही समय में एकाधिक फ़ील्ड (मूल रूप से एक कॉम्बो) को सॉर्ट करने के लिए, लेकिन मुझे नहीं लगता कि यह एक ही समय में दस्तावेज़ और उप-दस्तावेज़ फ़ील्ड दोनों पर सॉर्ट करते समय काम करता है। यदि आप शीर्ष दस्तावेज़ के दो अलग-अलग फ़ील्ड को सॉर्ट करना चाहते हैं या उप-दस्तावेज़ के दो अलग-अलग क्षेत्रों पर तो मुझे लगता है कि यह ठीक होगा।
तो आप एकत्रीकरण
का उपयोग करके समान आउटपुट प्राप्त कर सकते हैं। रूपरेखा। आपको बस इतना करना है कि मूल रूप से subs
. के सरणियों को तोड़ना है फ़ील्ड और फिर सॉर्ट
उन्हें।
आप कुछ ऐसा कर सकते हैं:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
उपरोक्त कोड के साथ आपको इसके समान आउटपुट मिलना चाहिए:
{
id: 1,
type: 'strs',
subs:
{ time: 1, val: 'ab' }
},{
id: 1,
type: 'strs',
subs:
{ time: 20, val: 'cs' }
},{
id: 1,
type: 'strs',
subs:
{ time: 50, val: 'be' }
},{
id: 2,
type: 'newname',
subs:
{ time: 12, val: 'a' }
},{
id: 2,
type: 'newname',
subs:
{ time: 20, val: 'b' }
},{
id: 2,
type: 'newname',
subs:
{ time: 30, val: 'c' }
}