एकाधिक फ़ील्ड द्वारा गिनने के लिए, MongoDB में $facet का उपयोग करें। $facet इनपुट दस्तावेज़ों के एक ही सेट पर एक ही चरण में कई एकत्रीकरण पाइपलाइनों को संसाधित करता है। आइए दस्तावेजों के साथ एक संग्रह बनाएं -
> db.demo721.insertOne(... {...... "details1":{... "id":101...... },... "details2":{. .. "id":101...},... "details3":{... "id":101...}...}...);{ "स्वीकृत" :सच, "insertId" " :ObjectId("5eaaebdd43417811278f5887")}>>> db.demo721.insertOne(... {...... "details1":{... "id":101......},. .. "details2":{... "id":102...},... "details3":{... "id":102...}...}...);{ "स्वीकृत" :सच, "insertId" :ObjectId("5eaaebe943417811278f5888")}
संग्रह से सभी दस्तावेज़ों को खोजने () विधि की सहायता से प्रदर्शित करें -
> db.demo721.find();
यह निम्नलिखित आउटपुट उत्पन्न करेगा -
{ "_id" :ObjectId("5eaaebdd43417811278f5887"), "details1" :{ "id" :101 }, "details2" :{ "id" :101 }, "details3" :{ "id" :101 } }{ "_id" :ObjectId ("5eaaebe943417811278f5888"), "details1" :{ "id" :101 }, "details2" :{ "id" :102 }, "details3" :{ "id" :102 } }पूर्व>कई क्षेत्रों द्वारा गणना की जाने वाली क्वेरी निम्नलिखित है -
> db.demo721.aggregate([... {$face:{... ids:[... {$group:{ _id:null,... d3:{$addToSet:"$details3. id"},... d2:{$addToSet:"$details2.id"},... d1:{$addToSet:"$details1.id"}}},... {$project:{ _id:0,... लिस्टोफॉल:{$सेटयूनियन:["$d1",,"$d2","$d3"]}}}],... d:[{$project:{ _id:0,... a1:"$details1.id",... a2:"$details2.id",... a3:"$details3.id"}}]}},... {$अनविंड:"$d"} ,... {$अनविंड:"$ids"},... {$अनविंड:"$ids.listofall"},... {$group:{ _id:"$ids.listofall",... details1id :{$sum:{$cond:[{$eq:["$d.a1","$ids.listofall"]},1,0]}},... details2id:{$sum:{$cond :[{$eq:["$d.a2","$ids.listofall"]},1,0]}},... details3id:{$sum:{$cond:[{$eq:[" $d.a3","$ids.listofall"]},1,0]}}}}])यह निम्नलिखित आउटपुट उत्पन्न करेगा -
{ "_id" :102, "details1id" :0, "details2id" :1, "details3id" :1 }{ "_id" :101, "details1id" :2, "details2id" :1, "details3id" :1 }पूर्व>