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

MongoDB में सरणी के दो मान बहु-मानदंड के अनुरूप हैं कैसे जांचें?

MongoDB में सरणी के दो अलग-अलग तत्वों के अलग-अलग मानदंड पूरे करने की जांच के लिए $elemMatch के साथ $and का उपयोग करें।

उदाहरण

संख्या सरणी वाले दस्तावेज़ बनाएं:

> db.findDocumentsHaving2Demo.insertOne({_id: 101, Values: [78, 98]});
{ "acknowledged" : true, "insertedId" : 101 }
> db.findDocumentsHaving2Demo.insertOne({_id: 102, Values: [89, 102]});
{ "acknowledged" : true, "insertedId" : 102 }

दस्तावेज़ देखें:

> db.findDocumentsHaving2Demo.find().pretty();
{ "_id" : 101, "Values" : [ 78, 98 ] }
{ "_id" : 102, "Values" : [ 89, 102 ] }

क्वेरी: एक तत्व 77-78 के बीच AND दूसरा 90-110 के बीच AND केवल 2 तत्व

> db.findDocumentsHaving2Demo.find({
  $and: [
    {Values: {$elemMatch: {$gte: 77, $lte: 78}}},
    {Values: {$elemMatch: {$gte: 90, $lte: 110}}},
    {'Values.2': {$exists: false}}
  ]
});

आउटपुट:

{ "_id" : 101, "Values" : [ 78, 98 ] }

व्याख्या:

  • $elemMatch: {$gte: 77, $lte: 78} - एक ही तत्व दोनों शर्तें पूरी करे (77-78)
  • $elemMatch: {$gte: 90, $lte: 110} - एक (अन्य) तत्व 90-110 के बीच
  • Values.2: {$exists: false} - तीसरा तत्व नहीं (सरणी लंबाई 2)
  • $and - सभी शर्तें पूरी होनी चाहिए

क्यों दो $elemMatch?

यदि आप लिखते:

{Values: {$elemMatch: {$gte: 77, $lte: 78, $gte: 90, $lte: 110}}}

यह एक ही तत्व के लिए असंभव शर्त बन जाता है (साथ में 77-78 और 90-110)।

दो अलग $elemMatch अलग-अलग तत्वों से मेल खा सकते हैं।

सरणी इंडेक्स नोटेशन विकल्प

db.collection.find({
  "Values.0": {$gte: 77, $lte: 78},
  "Values.1": {$gte: 90, $lte: 110},
  "Values.2": {$exists: false}
})

यह सरणी क्रम पर निर्भर करता है (पहला तत्व 77-78, दूसरा 90-110)। $elemMatch क्रम-स्वतंत्र है।

  1. - MongoDB में मानों की सरणी दिए जाने पर मिलते-जुलते दस्तावेज़ कैसे खोजें?

    विशिष्ट दस्तावेज़ों के लिए, MongoDB $in ऑपरेटर का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo511.insertOne({ListOfProject:[Library Management System,Hospital Management System]}); { acknowledged : true, insertedId : ObjectId(5e88473a987b6e0e9d18f585) } > db.demo511.insertOne(

  1. - MongoDB में ऑब्जेक्ट्स की सरणी के अंदर कई मिलान कैसे खोजें?

    इसके लिए, $and के साथ $regex का उपयोग करें। $and एक या अधिक एक्सप्रेशन की सरणी पर लॉजिकल AND ऑपरेशन करता है और उन दस्तावेज़ों को चुनता है जो सरणी में सभी एक्सप्रेशन को संतुष्ट करते हैं। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo525.insertOne({details:[{Name:Chris,CountryName:US}]}); { ackn

  1. - MongoDB: ऐरे वैल्यूज के आधार पर दस्तावेजों को मैच करें जो विशिष्ट मान से अधिक हों

    आप $elemMatch का उपयोग कर सकते हैं। $elemMatch ऑपरेटर उन दस्तावेजों से मेल खाता है जिनमें एक ऐरे फील्ड होता है जिसमें कम से कम एक एलिमेंट होता है जो सभी निर्दिष्ट क्वेरी मानदंडों से मेल खाता है। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo701.insertOne({ListOfValues:[100,200,300]}); { a