चूंकि दो संग्रह हैं, हमें उपयोग करने की आवश्यकता है
$lookup
टो संग्रह में शामिल होने के लिए। यहां मैंने uncorelated का इस्तेमाल किया सबक्वेरी- एकत्रीकरण
colA
. में किया जाता है संग्रह, लेकिनlookup
. के अंदर कीpipeline
हमcolB
. पर एकत्रीकरण करते हैं .$unwind
items
को डी-स्ट्रक्चर करने में मदद करता है .$match
अवांछित डेटा को खत्म करने में मदद करता है (मैच चरण के लिए $expr<की आवश्यकता होती है। /ए> )। - एक बार जब हमारा जुड़ाव सफल हो जाता है, तो हमें
$size
. का उपयोग करके केवल सरणी की गणना करने की आवश्यकता होती है $reduce
size
. के सरणी मान को जोड़ने में मदद करता है
मोंगो लिपि नीचे दी गई है।
db.colA.aggregate([
{
$lookup: {
from: "colB",
let: {
bid: "$_id"
},
pipeline: [
{
$match: {
$or: [
{
is_delete: false
},
{
is_delete: {
"$exists": false
}
}
]
}
},
{
$unwind: "$items"
},
{
$match: {
$expr: {
$eq: [
"$items._id",
"$$bid"
]
}
}
},
],
as: "data"
}
},
{
$project: {
count: {
$reduce: {
input: "$data",
initialValue: 0,
in: {
$add: [
"$$value",
"$$this.items.size"
]
}
}
}
}
}
])
कार्य मोंगो खेल का मैदान