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

MongoDB में समान ऐरे वाले डॉक्यूमेंट्स खोजें और समानता मूल्य के अनुसार क्रमबद्ध करें

MongoDB में ऐरे समानता के आधार पर डॉक्यूमेंट्स खोजना और रैंक करना

ऐरे समानता की गणना करके डॉक्यूमेंट्स को रैंक करें।

कलेक्शन बनाना

> db.demo123.insertOne({"ListOfSubject":['MySQL', 'MongoDB', 'Java']});
{ "acknowledged": true, "insertedId": ObjectId("5e2f24ac140daf4c2a3544b8") }
> db.demo123.insertOne({"ListOfSubject":['Python', 'MongoDB', 'C']});
{ "acknowledged": true, "insertedId": ObjectId("5e2f24cd140daf4c2a3544b9") }
> db.demo123.insertOne({"ListOfSubject":['MySQL', 'MongoDB', 'C++']});
{ "acknowledged": true, "insertedId": ObjectId("5e2f24ce140daf4c2a3544ba") }

सभी डॉक्यूमेंट्स

> db.demo123.find();
{ "_id": ObjectId("5e2f24ac140daf4c2a3544b8"), "ListOfSubject": [ "MySQL", "MongoDB", "Java" ] }
{ "_id": ObjectId("5e2f24cd140daf4c2a3544b9"), "ListOfSubject": [ "Python", "MongoDB", "C" ] }
{ "_id": ObjectId("5e2f24ce140daf4c2a3544ba"), "ListOfSubject": [ "MySQL", "MongoDB", "C++" ] }

समानता खोज और रैंकिंग क्वेरी

> var subjects = ['MySQL', 'MongoDB', 'Java'];
> db.demo123.aggregate([
    {$unwind: "$ListOfSubject"},
    {$match: {ListOfSubject: { $in: subjects }}},
    {$group: {_id: "$_id", number: {$sum: 1}}},
    {$project: {_id: 1, number: 1, percentage: {$divide: ["$number", subjects.length]}}},
    {$sort: {percentage: -1}}
]);

परिणाम

{ "_id": ObjectId("5e2f24ac140daf4c2a3544b8"), "number": 3, "percentage": 1 }
{ "_id": ObjectId("5e2f24ce140daf4c2a3544ba"), "number": 2, "percentage": 0.6666666666666666 }
{ "_id": ObjectId("5e2f24cd140daf4c2a3544b9"), "number": 1, "percentage": 0.3333333333333333 }

व्याख्या

  1. $unwind: ListOfSubject ऐरे को अलग-अलग डॉक्यूमेंट्स में फैलाता है
  2. $match: केवल उन्हीं विषयों को रखता है जो subjects ऐरे में हैं
  3. $group: मूल डॉक्यूमेंट _id के अनुसार ग्रुप करता है, मिलान की संख्या गिनता है
  4. $project: प्रतिशत की गणना करता है (मिलान / कुल विषय)
  5. $sort: प्रतिशत के अवरोही क्रम में सॉर्ट करता है

परिणाम विश्लेषण

  • पहला डॉक्यूमेंट: सभी 3 विषय मेल खाते हैं → 100%
  • तीसरा डॉक्यूमेंट: 2 विषय मेल खाते हैं (MySQL, MongoDB) → 66.67%
  • दूसरा डॉक्यूमेंट: 1 विषय मेल खाता है (MongoDB) → 33.33%

यह दृष्टिकोण रिकमेंडेशन सिस्टम, समान सामग्री खोज, आदि के लिए उपयोगी है।

  1. - MongoDB में विशिष्ट संख्या से अधिक फील्ड मान वाले डॉक्यूमेंट्स से मिलान करके उन्हें प्राप्त करें

    मिलान के लिए MongoDB में $match का उपयोग करें। विशिष्ट संख्या से अधिक मानों के लिए $gt का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo730.insertOne({Name : Chris, Marks : 33 }); { acknowledged : true, insertedId : ObjectId(5eac54cd56e85a39df5f6339) } > db.demo730.insertOne({ Name : David,

  1. - MongoDB में फॉर लूप के साथ मान कैसे पुश करें?

    मान पुश करने के लिए फॉर लूप के साथ save() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > for(var v=1; v<7; v++) { ... db.demo739.save({Name:Chris,SubjectName:MongoDB}); ... } WriteResult({ nInserted : 1 }) find() से सभी डॉक्यूमेंट्स देखें: > db.demo739.find(); आउटपुट (6 डॉक्यूमेंट्स डाले गए): { _

  1. - MongoDB में विशिष्ट नेस्टेड डॉक्यूमेंट्स के लिए ऑब्जेक्ट्स की सरणी पर क्वेरी कैसे करें?

    ऑब्जेक्ट्स की सरणी के लिए नेस्टेड डॉक्यूमेंट्स पर क्वेरी करने के लिए find() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo763.insertOne( { _id:1, CountryName:US, studentInformation: [ { StudentName:Chris }, { StudentName:David, StudentAge:22 } ] } ); { acknowledged : true, insertedId : 1 } f