ऐसा करने का सबसे अच्छा तरीका मोंगोडीबी 3.2 या नए में है। हमें $project
की जरूरत है
हमारे दस्तावेज़ और $filter
का उपयोग करें
ऑपरेटर हमारी स्थिति से मेल खाने वाले "topicInfo" सरणी का एक सबसेट वापस करने के लिए। और MongoDB3.2 के रूप में, हम $max का उपयोग कर सकते हैं
$प्रोजेक्ट
. में cond
. में चरण ition अभिव्यक्ति और लौटाए गए मान पर तार्किक संचालन करें।
पाइपलाइन में अंतिम चरण $match
चरण जहाँ आप $मौजूद है
एलिमेंट क्वेरी ऑपरेटर और डॉट नोटेशन
सरणी में पहले तत्व तक पहुँचने के लिए। यह वायर पर भेजे गए डेटा की मात्रा और क्लाइंट-साइड पर दस्तावेज़ों को डीकोड करने के लिए उपयोग किए जाने वाले समय और मेमोरी दोनों को भी कम करता है।
db.collection.aggregate([
{ "$project": {
"topicInfo": {
"$filter": {
"input": "$topicInfo",
"as": "t",
"cond": {
"$and": [
{ "$eq": [ "$$t.topic", "topic2"] },
{ "$eq": [ "$$t.time", { "$max": "$topicInfo.time" } ] }
]
}
}
}
}},
{ "$match": { "topicInfo.0": { "$exists": true } } }
])