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

MongoDB में सरणी में समान मान एकाधिक बार खोजने की क्वेरी

MongoDB में सरणी में किसी मान की एकाधिक घटनाएं (डुप्लिकेट) वाले दस्तावेज़ ढूंढने के लिए $where ऑपरेटर के साथ JavaScript फ़िल्टर का उपयोग करें।

उदाहरण

कीमतों की सरणी वाले दस्तावेज़ बनाएं:

> db.sameValueMultipleTimesDemo.insertOne(
  {"ListOfPrice": [{"Price": 110}, {"Price": 130}, {"Price": 145}]}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cefc4e6ef71edecf6a1f6b9") }

> db.sameValueMultipleTimesDemo.insertOne(
  {"ListOfPrice": [{"Price": 110}, {"Price": 178}, {"Price": 110}]}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cefc4e7ef71edecf6a1f6ba") }

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

> db.sameValueMultipleTimesDemo.find().pretty();
{ "_id" : ObjectId("5cefc4e6ef71edecf6a1f6b9"), "ListOfPrice" : [ { "Price" : 110 }, { "Price" : 130 }, { "Price" : 145 } ] }
{ "_id" : ObjectId("5cefc4e7ef71edecf6a1f6ba"), "ListOfPrice" : [ { "Price" : 110 }, { "Price" : 178 }, { "Price" : 110 } ] }

Price 110 एक से अधिक बार वाले दस्तावेज़ ढूंढें

> db.sameValueMultipleTimesDemo.find({
  "$where": function() {
    return this.ListOfPrice.filter(function(p) {
      return p.Price == 110;
    }).length > 1;
  }
});

आउटपुट:

{ "_id" : ObjectId("5cefc4e7ef71edecf6a1f6ba"), "ListOfPrice" : [ { "Price" : 110 }, { "Price" : 178 }, { "Price" : 110 } ] }

व्याख्या:

  • this.ListOfPrice - सरणी तक पहुंच
  • .filter(...) - Price 110 वाले तत्व फिल्टर करता है
  • .length > 1 - एक से अधिक घटनाएं जांचता है

चेतावनी: $where धीमा है। बड़े कलेक्शन के लिए एग्रीगेशन विकल्प:

db.collection.aggregate([
  {$unwind: "$ListOfPrice"},
  {$group: {_id: "$_id", count: {$sum: {$cond: [{$eq: ["$ListOfPrice.Price", 110]}, 1, 0]}}, doc: {$first: "$$ROOT"}}},
  {$match: {count: {$gt: 1}}},
  {$replaceRoot: {newRoot: "$doc"}}
])

यह इंडेक्स का उपयोग कर सकता है और अधिक स्केलेबल है।

  1. MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें

    इसके लिए $not के साथ $in ऑपरेटर का उपयोग करें। आइए एक संग्रह बनाते हैं: [ { id: 101, subjectid: [ 102 ] }, { id: 102, subjectid: [ 102 ] } ] सभी दस्तावेज़ देखने के लिए: db.collection.find() आउटपुट: [ { _id: ObjectId(5a934e000102030405000000),

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

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

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

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