मोंगो दस्तावेज़ से $sum व्यवहार
हम $push
. कर सकते हैं सभी क्षेत्र और लंबाई से सरणी, और तुलना करें count
सरणी की लंबाई के साथ
डीबी.एन.एग्रीगेट(
[
{
$group: {
_id: { name: "$name" },
count: { $sum: 1 },
area : {$push : "$area"},
length : {$push : "$length"} }
},
{
$project:{
_id: "$_id",
count: "$count",
summarizedLength: { $cond : [ {$eq : [ "$count", {$size : "$length"} ]} , { $sum : ["$length"] }, "not all numbers" ] },
summarizedArea: { $cond : [ {$eq : [ "$count", {$size : "$area"} ]} , { $sum : ["$area"] }, "not all numbers" ] },
}
}
]
)
या, हम defined
. की संख्या गिन सकते हैं कुल count
. के साथ लंबाई और क्षेत्र , यदि मिलान की गणना की जाती है तो सभी संख्याएं कुछ अपरिभाषित हैं।
प्रकार की कड़ाई से जांच करने के लिए, यदि क्षेत्र और लंबाई में गैर-संख्यात्मक डेटा हो सकता है, तो undefined
के बजाय हम $type
कर सकते हैं जाँच करें
db.n.aggregate(
[
{
$group: {
_id: { name: "$name" },
count: { $sum: 1 },
areaCount : { $sum : { $cond : [ {$eq : [ "$area", undefined ]} , 0, 1 ] } },
lengthCount : { $sum : { $cond : [ {$eq : [ "$length", undefined ]} , 0, 1 ] } },
summarizedLength: { $sum: "$length" },
summarizedArea: { $sum: "$area" }
}
},
{
$project : {
_id : "$_id",
count: "$count",
summarizedLength: { $cond : [ {$eq : [ "$count", "$lengthCount" ]} , "$summarizedLength", "not all numbers" ] },
summarizedArea: { $cond : [ {$eq : [ "$count", "$areaCount" ]} , "$summarizedArea", "not all numbers" ] },
}
}
]
).pretty()
आउटपुट
{
"_id" : {
"name" : "abc"
},
"count" : 2,
"summarizedLength" : 30,
"summarizedArea" : "not all numbers"
}