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

मोंगोडब को एकत्रीकरण ढांचे में अंतिम संयोजन मिलता है

आपको यहां "प्रेषक और प्राप्तकर्ता" के प्रत्येक संयोजन के लिए उत्पन्न "अद्वितीय कुंजी" मान की आवश्यकता है। यदि आप इसे नियमित रूप से करना चाहते हैं तो मैं दस्तावेज़ में मूल्य संग्रहीत करने का सुझाव दूंगा। लेकिन यह एक तरीका है जिससे आप समेकन ढांचे का उपयोग करके समस्या से बाहर निकल सकते हैं:

 db.messages.aggregate([
    { "$project": {
       "combined": { "$map": {
           "input": { "$literal": ["A","B"] },
           "as": "bin",
           "in": { "$cond": [ 
               { "$eq": [ "$$bin", "A" ] },
               "$sender",
               "$recipient"
           ]}
       }},
       "doc": "$$ROOT"
    }},
    { "$unwind": "$combined" },
    { "$sort": { "_id": 1, "combined": 1, "doc.date": -1 } },
    { "$group": {
        "_id": "$_id",
        "combined": { "$push": "$combined" },
        "doc": { "$first": "$doc" }
    }},
    { "$group": {
        "_id": "$combined",
        "doc": { "$first": "$doc" }
    }}
])

यह आपके नमूने को "प्रेषक / प्राप्तकर्ता" पर "अद्वितीय" 3 संयोजनों तक सीमित कर देता है और उस "जोड़ी" के बीच बातचीत में अंतिम दस्तावेज़ लौटाता है:

{
    "_id" : [
            "52f37fbaf9cd0e02773c97b1",
            "53172480f9cd0e682840b9f7"
    ],
    "doc" : {
            "_id" : "54b4cec9f6a48ce34f8b6429",
            "date" : NumberLong(1421135561),
            "sender" : "53172480f9cd0e682840b9f7",
            "recipient" : "52f37fbaf9cd0e02773c97b1",
            "isRead" : false,
            "text" : "Hello 2!"
    }
}
{
    "_id" : [
            "52f37fbaf9cd0e02773c97b1",
            "53072122f9cd0ee76306dc5a"
    ],
    "doc" : {
            "_id" : "54b4cf02f6a48ce54f8b62f9",
            "date" : NumberLong(1421135618),
            "sender" : "53072122f9cd0ee76306dc5a",
            "recipient" : "52f37fbaf9cd0e02773c97b1",
            "isRead" : false,
            "text" : "Hello 3!"
    }
}
{
    "_id" : [
            "52ea178ff9cd0e9f24d776b4",
            "52f37fbaf9cd0e02773c97b1"
    ],
    "doc" : {
            "_id" : "54b4d249f6a48ce54f8b6b9f",
            "date" : NumberLong(1421136457),
            "sender" : "52f37fbaf9cd0e02773c97b1",
            "recipient" : "52ea178ff9cd0e9f24d776b4",
            "isRead" : false,
            "text" : "Hello 4!"
    }
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. PHP intl.so विफल रहता है

  2. मोंगोइड में चर के साथ LIKE/regex का प्रयोग करें

  3. मैं रेल 4 में config/mongo.yml फ़ाइल जेनरेट करने के लिए मोंगो मैपर कैसे प्राप्त कर सकता हूं?

  4. MongoDB में आयु की गणना करने के लिए दिनांक अंतर को वर्षों में बदलें

  5. मोंगो डीबी:नेस्टेड सरणी मान खोजें