मेरे पास $facet
. का उपयोग करके एक एकत्रीकरण है; यह प्रत्येक दस्तावेज़ पास के लिए समानांतर में प्रश्न करने की अनुमति देता है। इसलिए, हम क्वेरी करते हैं और Cost
. की गणना करते हैं और Status
एक ही प्रश्न के दो पहलुओं के रूप में।
db.test.aggregate( [
{
$match: { fld1: "Data" }
},
{
$facet: {
cost: [
{ $match: { cost: { $exists: true } } },
{ $count: "count" }
],
status: [
{ $match: { status: { $exists: true } } },
{ $count: "count" }
],
}
},
{
$project: {
costCount: { $arrayElemAt: [ "$cost.count" , 0 ] },
statusCount: { $arrayElemAt: [ "$status.count" , 0 ] }
}
}
] )
मुझे { "costCount" : 4, "statusCount" : 3 }
का परिणाम मिलता है , निम्नलिखित दस्तावेज़ों का उपयोग करते हुए:
{ _id: 1, fld1: "Data", cost: 12, status: "Y" },
{ _id: 2, fld1: "Data", status: "N" },
{ _id: 3, fld1: "Data" },
{ _id: 4, fld1: "Data", cost: 90 },
{ _id: 5, fld1: "Data", cost: 44 },
{ _id: 6, fld1: "Data", cost: 235, status: "N" },
{ _id: 9, fld1: "Stuff", cost: 0, status: "Y" }
ध्यान दें :यहां पहलुओं का उपयोग करते हुए एक समान क्वेरी है:MongoDB दो क्षेत्रों पर कस्टम छँटाई
।