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

MongoDB में रैंकिंग/सर्च काउंट के लिए क्वेरी

MongoDB में रैंकिंग/सर्च काउंट लागू करना

इसके लिए MongoDB में aggregate() का उपयोग करें। पहले एक कलेक्शन बनाते हैं:

> db.demo120.insertOne(
    {
        'Name': 'Chris',
        'Subjects': ['MySQL', 'MongoDB', 'Java', 'Python']
    }
);
{ "acknowledged": true, "insertedId": ObjectId("5e2f11aed8f64a552dae6365") }
> db.demo120.insertOne(
    {
        'Name': 'Bob',
        'Subjects': ['C', 'MongoDB']
    }
);
{ "acknowledged": true, "insertedId": ObjectId("5e2f11afd8f64a552dae6366") }

सभी डॉक्यूमेंट्स देखना

> db.demo120.find();

आउटपुट:

{ "_id": ObjectId("5e2f11aed8f64a552dae6365"), "Name": "Chris", "Subjects": ["MySQL", "MongoDB", "Java", "Python"] }
{ "_id": ObjectId("5e2f11afd8f64a552dae6366"), "Name": "Bob", "Subjects": ["C", "MongoDB"] }

रैंकिंग/सर्च काउंट क्वेरी

> var s = ['MySQL', 'Java', 'MongoDB'];
> db.demo120.aggregate([
    { "$match": { "Subjects": { "$in": s } } },
    {
        "$addFields": {
            "RankSearch": {
                "$divide": [
                    { "$size": { "$setIntersection": ["$Subjects", s] } },
                    { "$size": "$Subjects" }
                ]
            }
        }
    },
    { "$sort": { "RankSearch": -1 } }
])

परिणाम

{ "_id": ObjectId("5e2f11aed8f64a552dae6365"), "Name": "Chris", "Subjects": ["MySQL", "MongoDB", "Java", "Python"], "RankSearch": 0.75 }
{ "_id": ObjectId("5e2f11afd8f64a552dae6366"), "Name": "Bob", "Subjects": ["C", "MongoDB"], "RankSearch": 0.5 }

व्याख्या

  • $match: केवल उन्हीं डॉक्यूमेंट्स को चुनता है जिनके Subjects ऐरे में कम से कम एक मान s ऐरे से मेल खाता है
  • $setIntersection: दोनों ऐरे के सामान्य तत्व ढूंढता है
  • $size: ऐरे की लंबाई लौटाता है
  • $divide: सामान्य तत्वों की संख्या को कुल विषयों की संख्या से विभाजित करता है
  • $sort: RankSearch के अवरोही क्रम में सॉर्ट करता है

Chris का स्कोर 0.75 है क्योंकि उसके 4 में से 3 विषय मेल खाते हैं, जबकि Bob का 0.5 है क्योंकि उसके 2 में से 1 विषय मेल खाता है।

  1. - MongoDB क्वेरी: डिस्टिंक्ट सेलेक्ट करें और काउंट करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo586.insertOne({ details: [ { Name:Chris, Marks:71 }, { Name:Chris, Marks:61 }, { Name:David, Marks:81 } ] }); { acknowledged : true, insertedId : ObjectId(5e9200fefd2d90c177b5bcc7) } > db.demo586.insertOne({

  1. - MongoDB क्वेरी: फील्ड मानों में "@email" जैसे स्ट्रिंग की खोज करें

    MongoDB find() का उपयोग करके ईमेल स्ट्रिंग खोजें। आइए एक कलेक्शन बनाते हैं: > db.demo727.insertOne({UserId:John@email.com}); { acknowledged : true, insertedId : ObjectId(5eab375f43417811278f5898) } > db.demo727.insertOne({UserId:John@yahoo.com}); { acknowledged : true, insertedId : ObjectId(5

  1. - MongoDB $regex ऑपरेटर: केस इनसेंसिटिव खोज के लिए i या I

    इसके लिए आपको केस इनसेंसिटिव (i) का उपयोग करना होगा। आइए एक कलेक्शन बनाते हैं: > db.demo759.insertOne({SubjectName:MySQL}); { acknowledged : true, insertedId : ObjectId(5eb02ba95637cd592b2a4ae7) } > db.demo759.insertOne({SubjectName:MongoDB}); { acknowledged : true, insertedId : ObjectId(5eb0