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

MongoDB में सरणी के सभी तत्वों का विशिष्ट मान होना कैसे जांचें?

MongoDB में सरणी के सभी तत्वों का विशिष्ट मान होने की जांच के लिए $not + $elemMatch + $ne का संयोजन उपयोग करें।

उदाहरण

उत्पाद मूल्य सरणी वाले दस्तावेज़ बनाएं:

> db.findDocumentsDemo.insertOne(
  {_id: 101, "ProductDetails": [{"ProductValue": 100}, {"ProductValue": 120}]}
);
{ "acknowledged" : true, "insertedId" : 101 }

> db.findDocumentsDemo.insertOne(
  {_id: 102, "ProductDetails": [{"ProductValue": 120}, {"ProductValue": 120}, {"ProductValue": 120}]}
);
{ "acknowledged" : true, "insertedId" : 102 }

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

> db.findDocumentsDemo.find().pretty();
{ "_id" : 101, "ProductDetails" : [ { "ProductValue" : 100 }, { "ProductValue" : 120 } ] }
{ "_id" : 102, "ProductDetails" : [ { "ProductValue" : 120 }, { "ProductValue" : 120 }, { "ProductValue" : 120 } ] }

सभी ProductValue 120 वाले दस्तावेज़ ढूंढें

> db.findDocumentsDemo.find({
  "ProductDetails.ProductValue": {$exists: true},
  "ProductDetails": {
    $not: {
      $elemMatch: {
        "ProductValue": {$ne: 120}
      }
    }
  }
});

आउटपुट:

{ "_id" : 102, "ProductDetails" : [ { "ProductValue" : 120 }, { "ProductValue" : 120 }, { "ProductValue" : 120 } ] }

व्याख्या:

  • ProductDetails.ProductValue: {$exists: true} - फील्ड मौजूद है (खाली सरणी बाहर)
  • $elemMatch: {ProductValue: {$ne: 120}} - 120 नहीं वाला तत्व ढूंढता है
  • $not - इसे उलट देता है: कोई भी तत्व 120 नहीं है
  • परिणाम: सभी तत्व 120 हैं

तर्क: "सभी तत्व 120 हैं" = "कोई तत्व 120 नहीं है ऐसा नहीं है" = NOT (EXISTS element != 120)

सरल सरणी (ऑब्जेक्ट नहीं) के लिए

// सरणी: [120, 120, 120]
db.collection.find({
  Values: {$not: {$elemMatch: {$ne: 120}}}
})

MongoDB 3.6+ में $expr विकल्प:

db.collection.find({
  $expr: {$eq: [{$size: "$Values"}, {$size: {$filter: {input: "$Values", cond: {$eq: ["$$this", 120]}}}}]}
})

यह सरणी आकार और फिल्टर बाद के आकार की तुलना करता है।

  1. - MongoDB दस्तावेज़ों में विशिष्ट फ़ील्ड के ऐरे एलिमेंट्स काउंट करना

    किसी फ़ील्ड में ऐरे एलिमेंट्स की संख्या गिनने के लिए $size ऑपरेटर का उपयोग करें। डेमो डेटा > db.demo723.insertOne({Subject:[MySQL,MongoDB]}); > db.demo723.insertOne({Subject:[C]}); > db.demo723.insertOne({Subject:[C++,Java,Python]}); क्वेरी db.demo723.aggregate([ { $project: { count:

  1. - MongoDB में सरणी क्वेरी करके विशिष्ट मान प्राप्त करें

    सरणी से विशिष्ट मान प्राप्त करने के लिए aggregate() के साथ $project का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo761.insertOne( { details: [ { student: { FullName: Chris Brown } } ] } ); { acknowledged : true, insertedId : ObjectId(5eb034d15637cd592b2a4af1) } > db.demo761.insertOne( { de

  1. - पायथन में k ढूंढना जहां k तत्वों का मान कम से कम k हो

    मान लीजिए हमारे पास nums नामक संख्याओं की एक लिस्ट है, जिसमें केवल नॉन-नेगेटिव संख्याएं हैं। यदि nums में ठीक k संख्या में तत्व हैं जो k से बड़े या बराबर हैं, तो मान k ढूंढें। यदि हम ऐसा नहीं ढूंढ सकते, तो -1 लौटाएं। उदाहरण के लिए, यदि इनपुट है nums = [6, 4, 0, 8, 2, 9], तो आउटपुट होगा 4, क्योंकि