मेरे डेटा में यह संरचना है:
{"user": {"name": "" "स्पोर्ट्स", {"नाम": "टेनिस"}, {"एसआईडी", "जॉन", "स्पोर्ट्स": ["एसआईडी": "स्पोर्ट 1", "नेम": "बास्केटबॉल"}, {"एसआईडी" : "जन्मदिन": "25/07/1960"}} "खेल", "नाम": "सर्फ"}, ... {"sId": "sportN", "name": "golf"}], "जन्मदिन" / Code> और मैं उसी उपयोगकर्ता को प्राप्त करने के लिए फ़िल्टर करना चाहता हूं, लेकिन केवल दो प्रथम खेल जैसे,:
{"user": {" नाम ":" टेनिस "}," नाम ":" स्पोर्ट्स "," नाम ":" स्पोर्ट्स "," नाम ":" स्पोर्ट्स 1 "," नेम "," नेम ":" बास्केटबॉल "}, {" sId " जन्मदिन ":" 25/07/1960 "}} और फिर अगले दो, ...
{" user ": {" name "" "" "" "" खेल ": [" एसआईडी ":" स्पोर्ट 3 "," नेम ":" सर्फ "}, {" एसआईडी ":" स्पोर्ट 4 "," नेम ":" आइस हॉकी "}]," जन्मदिन ":" 25/07/1960 "}} वगैरह
लेकिन मैं नहीं जानता कि कैसे पूरे उपयोगकर्ता को प्राप्त किए बिना इसे मंगोल में पूछना
किसी भी मदद की सराहना की जाएगी पहले से धन्यवाद।
एक विकल्प के रूप में, आप परिणामों को बाद में वापस समूह कर सकते हैं ताकि दो गेम प्राप्त करें सामान्य प्रारूप में वापस:
db.so.aggregate ({$ match: {'user.name': 'John'}}, {$ unwind: '$ user.sports'} , {$ Skip: 0}, {$ सीमा: 2}, {$ समूह: {_id: '$ _id', नाम: {$ पहले: '$ user.name'}, खेल: {$ push: '$ user .sports '}, जन्मदिन: {$ पहले:' $ user.birthDate '}}}); जो तब आउटपुट करता है:
{"परिणाम": [{"_id": ObjectId ("51c71c8d4a01738f3eac69fc"), "नाम": "जॉन" "खेल": "जन्मदिन": "25/25", "खेल": "स्पोर्ट्स 1", "नाम": "बास्केटबॉल"}, {"sId": "sport2", "नाम": "टेनिस"}] 07/1960 "}]," ठीक है ": 1}
No comments:
Post a Comment