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

MongoDB में $zip और $map का उपयोग करके दो सरणियों को ऑब्जेक्ट्स की सरणी में ट्रांसपोज़ करना

MongoDB एग्रीगेशन में $zip: सरणियों को ट्रांसपोज़ करना

$zip ऑपरेटर एकाधिक सरणियों को लेता है और उनके संगत इंडेक्स पर तत्वों को जोड़कर ऑब्जेक्ट्स की एक सरणी बनाता है (जैसे Python का zip())। फिर $map + $objectToArray/$arrayToObject का उपयोग करके वांछित आकार में ढाला जा सकता है।

नमूना डेटा

> db.demo339.insertOne({Id: 101, Score1: ["98", "56"], Score2: [67, 89]});
{ "acknowledged": true, "insertedId": ObjectId("5e529ee5f8647eb59e5620a2") }

एग्रीगेशन: Score1 और Score2 को जोड़ना

> db.demo339.aggregate([
    {
        $project: {
            AllArrayObject: {
                $map: {
                    input: {
                        $objectToArray: {
                            $arrayToObject: {
                                $zip: {inputs: ["$Score1", "$Score2"]}
                            }
                        }
                    },
                    as: "el",
                    in: {Score1: "$$el.k", Score2: "$$el.v"}
                }
            }
        }
    }
]);

परिणाम

{ "AllArrayObject": [ {"Score1": "98", "Score2": 67}, {"Score1": "56", "Score2": 89} ] }

दो सरणियों के संगत तत्व अब ऑब्जेक्ट्स की सरणी में जोड़े गए हैं। सरल दृष्टिकोण (MongoDB 5.0+): $zip सीधे inputs सरणी लेता है और useLongestLength विकल्प का समर्थन करता है। जटिल रूपांतरण के लिए $map/$reduce का उपयोग करें।

  1. - MongoDB में सरणी ऑब्जेक्ट के साथ सरणी तत्व के मान को बढ़ाएं

    सरणी ऑब्जेक्ट के मान को बढ़ाने के लिए, $inc का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: >db.demo506.insertOne({details:[{id:1,Quantity:4},{id:2,Quantity:3},{id:3,Quantity:2},{id:4,Quantity:7}]}); { acknowledged : true, insertedId : ObjectId(5e882ed6987b6e0e9d18f576) } find() मेथड की मद

  1. - MongoDB में नया यूजर बनाएं और रोल सेट करें

    इसके लिए, userAdminAnyDatabase का उपयोग करें क्योंकि यह एडमिन की तरह सभी परमिशन देता है। सिंटैक्स निम्न है: use admin db.createUser( { user: yourUserName, pwd: yourPassword, roles: [ { role: yourRoleName, db: yourDatabaseName } ] } ) आइए उपरोक्त सिंटैक्स को लागू करके

  1. - MongoDB: एक रिकॉर्ड को सरणी के साथ नए कलेक्शन में कई रिकॉर्ड्स में बदलें?

    इसके लिए $out के साथ aggregate() और $unwind का उपयोग कर सकते हैं। आइए एक कलेक्शन बनाते हैं: > db.demo757.insertOne( { id: 101, Name: [John, Bob, Chris] } ); { acknowledged : true, insertedId : ObjectId(5eb025745637cd592b2a4ae2) } > db.demo757.insertOne( { id: 102, Name: [David] } ); { acknowl