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

MongoDB में किसी फ़ील्ड के सभी गैर-विशिष्ट (Duplicate) मान कैसे खोजें?


एग्रीगेशन पाइपलाइन का उपयोग करना

किसी फ़ील्ड के डुप्लिकेट मान (यानी वे मान जो एक से अधिक बार आते हैं) खोजने के लिए aggregate() के साथ $group और $match का उपयोग करें।

उदाहरण: नमूना डेटा

> db.findAllNonDistinctDemo.insertOne({"UserName":"John","UserAge":28}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c995078863d6ffd454bb647") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Larry","UserAge":21}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c995081863d6ffd454bb648") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Larry","UserAge":23}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c995089863d6ffd454bb649") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"David","UserAge":22}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c995093863d6ffd454bb64a") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"John","UserAge":26}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c99509d863d6ffd454bb64b") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Robert","UserAge":24}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c9950a7863d6ffd454bb64c") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Robert","UserAge":25}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c9950b1863d6ffd454bb64d") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Mike","UserAge":29}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c9950bc863d6ffd454bb64e") }

एग्रीगेशन क्वेरी

> db.findAllNonDistinctDemo.aggregate([ 
    { "$group": { "_id": "$UserName", "Counter": { "$sum": 1 } } }, 
    { "$match": { "Counter": { "$gt": 1 } } } 
]).pretty();

आउटपुट:


व्याख्या:

  1. $group: UserName द्वारा समूहित करता है और घटनाओं की गणना करता है।
  2. $match: केवल उन समूहों को फ़िल्टर करता है जहां गणना > 1 (यानी डुप्लिकेट)।

विस्तार: डुप्लिकेट दस्तावेज़ों के पूर्ण विवरण प्राप्त करने के लिए, परिणामों को मूल संग्रह के साथ $lookup का उपयोग करके जोड़ें या पहचाने गए नामों के साथ find({ UserName: { $in: ["Robert", "Larry", "John"] } }) का उपयोग करें।

  1. - MongoDB में एग्रीगेशन का उपयोग करके सभी मानों को मैच करें

    MongoDB में सभी मानों को मैच करने के लिए, एग्रीगेशन में $match के साथ $and का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo574.insertOne({ details1: { details2: { dueDate: new ISODate(2020-01-10), Name: Chris, UserInformation: {

  1. - MongoDB क्वेरी: फील्ड के रिटर्निंग वैल्यूज को लिमिट करें

    इसके लिए $slice का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo594.insertOne({ id:1, details:[ {Name:Chris,Age:21}, {Name:Bob,Age:20}, {Name:David,Age:23}, {Name:Sam,Age:22} ] }); { acknowledged : true, insertedId : ObjectId(5e9334

  1. - MongoDB में किसी फ़ील्ड के सभी मानों को विशिष्ट स्ट्रिंग से अपडेट करना

    कलेक्शन के सभी दस्तावेज़ों में किसी फ़ील्ड का मान बदलने के लिए update() के साथ multi: true (या नए वर्जन में updateMany()) का उपयोग करें। डेमो डेटा > db.demo720.insertOne({SubjectName:MySQL}); > db.demo720.insertOne({SubjectName:Java}); > db.demo720.insertOne({SubjectName:C}); > db.demo7