विभिन्न संग्रह तत्वों में अद्वितीय गुणों के योग की गणना करने के लिए, $cond के साथ $group का उपयोग करें। यह परिणामी मूल्य देता है।
आइए दस्तावेजों के साथ एक संग्रह बनाएं -
> db.demo580.insertOne( ... { ... "Name":"John", ... "Id1":"110", ... "Id2":"111", ... "Price":10.5 ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e918cebfd2d90c177b5bcae") } > > db.demo580.insertOne( ... { ... "Name":"John", ... "Id1":"111", ... "Id2":"", ... "Price":9.5 ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e918cecfd2d90c177b5bcaf") }
संग्रह से सभी दस्तावेज़ों को खोजने () विधि की सहायता से प्रदर्शित करें -
> db.demo580.find();
यह निम्नलिखित आउटपुट देगा -
{ "_id" : ObjectId("5e918cebfd2d90c177b5bcae"), "Name" : "John", "Id1" : "110", "Id2" : "111", "Price" : 10.5 } { "_id" : ObjectId("5e918cecfd2d90c177b5bcaf"), "Name" : "John", "Id1" : "111", "Id2" : "", "Price" : 9.5 }
विभिन्न संग्रह तत्वों में अद्वितीय गुणों के योग की क्वेरी निम्नलिखित है -
> db.demo580.aggregate([ ... { ... $project: { ... Id1: 1, ... Id2: 1, ... Price: 1, ... match: { ... $cond: [ ... {$eq: ["$Id2", ""]}, ... "$Id1", ... "$Id2" ... ] ... } ... } ... }, ... { ... $group: { ... _id: '$match', ... Price: {$sum: '$Price'}, ... resultId: { ... $addToSet: { ... $cond: [ ... {$eq: ['$match', '$Id1']}, ... null, ... '$Id1' ... ] ... } ... } ... } ... }, ... {$unwind: '$resultId'}, ... {$match: { ... resultId: { ... $ne: null ... } ... } ... }, ... { ... $project: { ... Id1: '$resultId', ... Price: 1, ... _id: 0 ... } ... } ... ])
यह निम्नलिखित आउटपुट देगा -
{ "Price" : 20, "Id1" : "110" }