प्रोजेक्शन में सबफील्ड्स को टॉप लेवल पर प्रमोट करने के लिए $objectToArray और $arrayToObject का उपयोग करें। पहले कलेक्शन बनाएं:
> db.promoteSubfieldsDemo.insertOne({'s':10,'y':{'t':20,'u':30}});
{ "acknowledged": true, "insertedId": ObjectId("5e038004190a577c668b55d5") }
सभी डॉक्यूमेंट्स देखें:
> db.promoteSubfieldsDemo.find().pretty();
आउटपुट:
{ "_id": ObjectId("5e038004190a577c668b55d5"), "s": 10, "y": { "t": 20, "u": 30 } }
सबफील्ड्स को टॉप लेवल पर प्रमोट करने की क्वेरी:
> db.promoteSubfieldsDemo.aggregate([
{ "$replaceRoot": {
"newRoot": {
"$arrayToObject": {
"$concatArrays": [
[{ "k": "s", "v": "$s" }],
{ "$objectToArray": "$y" }
]
}
}
}}
]);
परिणाम:
{ "s": 10, "t": 20, "u": 30 }