Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में दो संग्रहों को कैसे एग्रीगेट करें जहां एक संग्रह का फ़ील्ड दूसरे से बड़ा हो?


इसके लिए $lookup का उपयोग कर सकते हैं। आइए दस्तावेज़ों के साथ पहला संग्रह बनाएं:

> db.demo446.insert([ ...    { "ProductName": "Product1", "ProductPrice": 60 }, ...    { "ProductName": "Product2", "ProductPrice": 90 } ... ]) BulkWriteResult({    "writeErrors" : [ ],    "writeConcernErrors" : [ ],    "nInserted" : 2,    "nUpserted" : 0,    "nMatched" : 0,    "nModified" : 0,    "nRemoved" : 0,    "upserted" : [ ] })

पहले संग्रह के सभी दस्तावेज़ प्रदर्शित करें

> db.demo446.find();

आउटपुट:

{ "_id" : ObjectId("5e790766bbc41e36cc3caec3"), "ProductName" : "Product1", "ProductPrice" : 60 } { "_id" : ObjectId("5e790766bbc41e36cc3caec4"), "ProductName" : "Product2", "ProductPrice" : 90 }

दूसरा संग्रह बनाएं

> db.demo447.insert([ ... ...    { "ProductName": "Product1", "ProductPrice": 40 }, ...    { "ProductName": "Product2", "ProductPrice": 70 } ... ]) BulkWriteResult({    "writeErrors" : [ ],    "writeConcernErrors" : [ ],    "nInserted" : 2,    "nUpserted" : 0,    "nMatched" : 0,    "nModified" : 0,    "nRemoved" : 0,    "upserted" : [ ] })

दूसरे संग्रह के सभी दस्तावेज़ प्रदर्शित करें

> db.demo447.find();

आउटपुट:

{ "_id" : ObjectId("5e790789bbc41e36cc3caec5"), "ProductName" : "Product1", "ProductPrice" : 40 } { "_id" : ObjectId("5e790789bbc41e36cc3caec6"), "ProductName" : "Product2", "ProductPrice" : 70 }

दोनों संग्रहों को एग्रीगेट करने की क्वेरी (जहां पहला दूसरे से बड़ा हो)

> var rate = 1; > db.demo446.aggregate([ ... { "$match": { "ProductPrice": { "$exists": true }, "ProductName": { "$exists": true } } }, ... { ...    "$lookup": { ...         "from": "demo447", ...         "localField": "ProductName", ...         "foreignField": "ProductName", ...         "as": "demo447" ...    } ... }, ... { "$unwind": "$demo447" }, ... { ...    "$redact": { ...       "$cond": [ ...          { ...               "$gt": [ ...                 "$ProductPrice", { ...                   "$add": [ ...                         { "$multiply": [ "$demo447.ProductPrice",rate ] }, ...                         3 ...                      ] ...                   } ...                ] ...             }, ...             "$$KEEP", ...             "$$PRUNE" ...          ] ...       } ...    } ... ])

आउटपुट

{ "_id" : ObjectId("5e790766bbc41e36cc3caec3"), "ProductName" : "Product1", "ProductPrice" : 60, "demo447" : { "_id" : ObjectId("5e790789bbc41e36cc3caec5"), "ProductName" : "Product1", "ProductPrice" : 40 } } { "_id" : ObjectId("5e790766bbc41e36cc3caec4"), "ProductName" : "Product2", "ProductPrice" : 90, "demo447" : { "_id" : ObjectId("5e790789bbc41e36cc3caec6"), "ProductName" : "Product2", "ProductPrice" : 70 } }

  1. - MongoDB में कलेक्शन को एग्रीगेट करके फील्ड काउंट के अनुसार ग्रुप कैसे करें?

    MongoDB aggregate() में $group का उपयोग करके कलेक्शन को एग्रीगेट करें और फील्ड काउंट के अनुसार ग्रुप करें। नमूना डेटा बनाना db.demo616.insertOne({details:{Name:Chris,Age:24}}); सभी दस्तावेज़ देखना db.demo616.find(); { details : { Name : Chris, Age : 21 } } { details : { Name : Chris, Age : 22 }

  1. - MongoDB कलेक्शन के सभी दस्तावेजों में नया फील्ड जोड़ें

    नया फील्ड जोड़ने के लिए, MongoDB में $addFields का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo712.insertOne({Name:John}); { acknowledged : true, insertedId : ObjectId(5ea85f675d33e20ed1097b82) } > db.demo712.insertOne({Name:Chris}); { acknowledged : true, insertedId : Ob

  1. - MongoDB कलेक्शन से डुप्लिकेट कैसे हटाएं?

    MongoDB कलेक्शन में डुप्लिकेट दस्तावेज़ों को रोकने के लिए, आप उस फ़ील्ड पर एक यूनिक इंडेक्स बना सकते हैं जो यूनिक होना चाहिए। unique: true विकल्प का उपयोग करें और साथ में dropDups: true (नोट: MongoDB 3.0+ में dropDups हटा दिया गया है; इसके बजाय डुप्लिकेट्स को मैन्युअली हटाएं)। सिंटैक्स db.yourColle