MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

प्रत्येक समूह के लिए अंतिम सही मान लौटाएं

ऐसा करने का सबसे अच्छा तरीका एकत्रीकरण ढांचे का उपयोग करना है। आपको $group . की आवश्यकता है "उपयोगकर्ता" द्वारा आपके दस्तावेज़ और $last . का उपयोग करके प्रत्येक उपयोगकर्ता के लिए अंतिम दस्तावेज़ लौटाएं संचायक ऑपरेटर लेकिन इसके काम करने के लिए, आपको $sort का उपयोग करके प्रारंभिक छँटाई चरण की आवश्यकता है एकत्रीकरण पाइपलाइन ऑपरेटर। अपने दस्तावेज़ों को क्रमबद्ध करने के लिए, आपको "बनाया गया" फ़ील्ड और "उपयोगकर्ता" फ़ील्ड दोनों पर विचार करना होगा।

पाइपलाइन में अंतिम चरण $match . है चरण जहाँ आप केवल उन अंतिम दस्तावेज़ों का चयन करते हैं जहाँ "isAbandoned" बराबर true . है ।

db.students.aggregate([
    { "$sort": { "user": 1, "createdAt": 1 } }, 
    { "$group": { 
        "_id": "$user", 
        "last": { "$last": "$$ROOT" }
    }}, 
    { "$match": { "last.isAbandoned": true } }
])

जो कुछ इस तरह लौटाता है:

{ 
    "_id" : ObjectId("56c85244bd5f92cd78ae4bc1"),
    "last" : {
        "_id" : ObjectId("56cee51503b7cb7b0eda9c4c"),
        "user" : ObjectId("56c85244bd5f92cd78ae4bc1"),
        "studentName" : "Rajeev",
        "createdAt" : ISODate("2016-02-25T11:27:17.281Z"),
        "isAbandoned" : true
    }
}

अपेक्षित परिणाम प्राप्त करने के लिए, हमें $replaceRoot . का उपयोग करने की आवश्यकता है एम्बेड किए गए दस्तावेज़ को शीर्ष स्तर पर बढ़ावा देने के लिए verion 3.4 से शुरू होने वाला पाइपलाइन ऑपरेटर

{
    $replaceRoot: { newRoot: "$last" }
}

पुराने संस्करण में, आपको $project . का उपयोग करने की आवश्यकता है हमारे दस्तावेज़ों को फिर से आकार देने के लिए एकत्रीकरण पाइपलाइन संचालन। इसलिए यदि हम अपनी पाइपलाइन को निम्न चरण के साथ विस्तारित करते हैं:

{ 
    "$project": { 
        "_id": "$last._id", 
        "user": "$last.user", 
        "studentName": "$last.studentName", 
        "createdAt": "$last.createdAt", 
        "isAbandoned": "$last.isAbandoned"
}}

यह अपेक्षित आउटपुट उत्पन्न करता है:

{
    "_id" : ObjectId("56cee51503b7cb7b0eda9c4c"),
    "user" : ObjectId("56c85244bd5f92cd78ae4bc1"),
    "studentName" : "Rajeev",
    "createdAt" : ISODate("2016-02-25T11:27:17.281Z"),
    "isAbandoned" : true
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पाइमोंगो का उपयोग करके मूल्यों को कैसे अपडेट करें?

  2. एक क्लस्टर में MongoDB चलाने के लिए सर्वोत्तम अभ्यास

  3. अपना पहला सलाहकार लिखें

  4. क्या मैं तिथि के अनुसार MongoDB ObjectId को क्वेरी कर सकता हूं?

  5. MongoDB में पुश ऑपरेशंस