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

MongoDB क्वेरी: इनर ऐरे में निर्दिष्ट ऑब्जेक्ट के योग द्वारा सॉर्ट कैसे करें

एग्रीगेशन: $unwind, $group, $sort से ऐरे एलिमेंट्स के सशर्त योग द्वारा सॉर्ट करें

जब डॉक्यूमेंट्स में ऐरे ऑफ़ ऑब्जेक्ट्स हो और आप किसी शर्त के आधार पर ऐरे एलिमेंट्स के योग की गणना करके डॉक्यूमेंट्स को सॉर्ट करना चाहें, तो एग्रीगेशन पाइपलाइन का उपयोग करें।

उदाहरण: संग्रह बनाना

> db.demo189.insertOne({
    "_id": 100,
    "List": [{"Value": 10}, {"Value": 20}, {"Value": 10}]
});
{ "acknowledged": true, "insertedId": 100 }
> db.demo189.insertOne({
    "_id": 101,
    "List": [{"Value": 10}, {"Value": 10}, {"Value": 10}]
});
{ "acknowledged": true, "insertedId": 101 }

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

> db.demo189.find();
{ "_id": 100, "List": [{"Value": 10}, {"Value": 20}, {"Value": 10}] }
{ "_id": 101, "List": [{"Value": 10}, {"Value": 10}, {"Value": 10}] }

सशर्त योग द्वारा सॉर्ट करने की एग्रीगेशन क्वेरी

List.Value == 10 वाले एलिमेंट्स की गिनती (प्रत्येक के लिए 1) का योग निकालें और अवरोही क्रम में सॉर्ट करें:

> db.demo189.aggregate([
    { "$unwind": "$List" },
    {
        "$group": {
            "_id": "$_id",
            "total": {
                "$sum": {
                    "$cond": {
                        "if": { "$eq": ["$List.Value", 10] },
                        "then": 1,
                        "else": 0
                    }
                }
            },
            "List": { "$push": { "Value": "$List.Value" } }
        }
    },
    { "$sort": { "total": -1 } },
    { "$project": { "List": 1 } }
])

आउटपुट:

{ "_id": 101, "List": [{"Value": 10}, {"Value": 10}, {"Value": 10}] }
{ "_id": 100, "List": [{"Value": 10}, {"Value": 20}, {"Value": 10}] }

डॉक्यूमेंट 101 में तीनों एलिमेंट्स 10 हैं (total=3), डॉक्यूमेंट 100 में दो एलिमेंट्स 10 हैं (total=2), इसलिए 101 पहले आया।

  1. - MongoDB में सबडॉक्यूमेंट्स के ऐरे को कैसे क्वेरी करें?

    सबडॉक्यूमेंट्स के ऐरे को क्वेरी करने के लिए MongoDB में $unwind का उपयोग करें। नमूना डेटा बनाना (सबडॉक्यूमेंट्स ऐरे) db.demo499.insertOne({ details: [ { Name:MIT, Rank: 1, CountryName:US }, { Name:Stanford University, Rank: 2 }, { Name:University of California, Berkeley, Rank: 3 }

  1. - MongoDB में नेस्टेड सरणी को कैसे सॉर्ट करें?

    MongoDB में नेस्टेड सरणी को सॉर्ट करने के लिए, $sort का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo505.insertOne( { details: [ { Name:Chris, Score:58 }, { Name:Bob, Score:45 }, { Name:John, Score:68 }, { Name:David, Score:46 } ] }); { ackn

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

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