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

MongoDB ऑब्जेक्ट सरणी में विभिन्न ऑब्जेक्ट्स के एट्रिब्यूट्स की तुलना कैसे करें?

MongoDB में एक ही सरणी के अंदर विभिन्न ऑब्जेक्ट्स के फील्ड्स की तुलना करने के लिए, एग्रीगेशन एक्सप्रेशन $let, $indexOfArray, $arrayElemAt, और $expr के साथ $lt, $gt आदि का उपयोग करें।

उदाहरण: विवरण सरणी वाला दस्तावेज़

> db.demo366.insertOne({
    "Name" : "Chris",
    "details" : [
        { "Id" : "John1", "value" : "test" },
        { "Id" : "John2", "value" : 18 },
        { "Id" : "John3", "value" : 20 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57ddd92ae06a1609a00ae7") }

दस्तावेज़ देखना

> db.demo366.find();

आउटपुट: तीन तत्वों वाली सरणी के साथ एक दस्तावेज़।

क्वेरी: John2.value < John3.value वाले दस्तावेज़ ढूंढें

> db.demo366.find({
    "$expr": {
        "$let": {
            "vars": {
                "john2": { "$arrayElemAt": [ "$details", { "$indexOfArray": [ "$details.Id", "John2" ] } ] },
                "john3": { "$arrayElemAt": [ "$details", { "$indexOfArray": [ "$details.Id", "John3" ] } ] }
            },
            "in": { "$lt": [ "$$john2.value", "$$john3.value" ] }
        }
    }
})

परिणाम

दस्तावेज़ लौटाया जाता है क्योंकि 18 < 20।

चरण व्याख्या

  1. $indexOfArray: सरणी में "John2" और "John3" Id वाले तत्व का इंडेक्स ढूंढता है।
  2. $arrayElemAt: उन इंडेक्स पर ऑब्जेक्ट्स निकालता है।
  3. $let: निकाले गए ऑब्जेक्ट्स के लिए चर (john2, john3) बांधता है।
  4. $lt: उनके value फील्ड्स की तुलना करता है।
  5. $expr: फाइंड क्वेरी के अंदर एग्रीगेशन एक्सप्रेशन के उपयोग की अनुमति देता है।

नोट

  • यह जटिल है; सरणी को रीस्ट्रक्चर करने पर विचार करें (उदाहरण के लिए, Id द्वारा ऑब्जेक्ट्स का मैप) आसान क्वेरी के लिए।
  • MongoDB 5.0+ में, $function या $accumulator अधिक लचीलापन दे सकते हैं।
  • सरणी में डुप्लिकेट Id के लिए इंडेक्स-आधारित लुकअप विफल हो सकते हैं; अद्वितीय पहचानकर्ता सुनिश्चित करें।
  1. - MongoDB में ऐरे में कैसे जोड़ें?

    MongoDB में ऐरे में जोड़ने के लिए $concatArrays ऑपरेटर का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo435.insertOne({"FirstName":["Chris"],"LastName":["Brown"]} ); {    "acknowledged" : true,    "inserted

  1. - MongoDB में ऑब्जेक्ट के अंदर ऐरे में आइटम कैसे डालें?

    ऑब्जेक्ट के अंदर पहले से बने ऐरे में आइटम डालने के लिए MongoDB $push ऑपरेटर का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo449.insertOne( ... { ...    details1: { ...       details2: [{ ...          _id:new ObjectId(), ...  

  1. - MongoDB में ऑब्जेक्ट ऐरे से आइटम कैसे प्राप्त करें?

    ऑब्जेक्ट ऐरे से आइटम प्राप्त करने के लिए aggregate() का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo459.insertOne( ... { "_id" : 1, ... "Information" : [ ...    { ...         "Name" : "Chris", ...