Mongo 4.2
से शुरू हो रहा है , नया $merge
एग्रीगेशन ऑपरेटर ($out
. के समान) ) विलय . की अनुमति देता है निर्दिष्ट संग्रह में एकत्रीकरण पाइपलाइन का परिणाम:
इस इनपुट को देखते हुए:
db.source.insert([
{ "_id": "id_1", "a": 34 },
{ "_id": "id_3", "a": 38 },
{ "_id": "id_4", "a": 54 }
])
db.target.insert([
{ "_id": "id_1", "a": 12 },
{ "_id": "id_2", "a": 54 }
])
$merge
एकत्रीकरण चरण का उपयोग इस प्रकार किया जा सकता है:
db.source.aggregate([
// { $whatever aggregation stage, for this example, we just keep records as is }
{ $merge: { into: "target" } }
])
उत्पादन करने के लिए:
// > db.target.find()
{ "_id" : "id_1", "a" : 34 }
{ "_id" : "id_2", "a" : 54 }
{ "_id" : "id_3", "a" : 38 }
{ "_id" : "id_4", "a" : 54 }
ध्यान दें कि $merge
ऑपरेटर कई विकल्पों
के साथ आता है यह निर्दिष्ट करने के लिए कि मौजूदा रिकॉर्ड के विपरीत सम्मिलित रिकॉर्ड को कैसे मर्ज किया जाए।
इस मामले में (डिफ़ॉल्ट विकल्पों के साथ), यह:
-
लक्ष्य संग्रह के मौजूदा दस्तावेज़ रखता है (यह
{ "_id": "id_2", "a": 54 }
का मामला है ) -
एकत्रीकरण पाइपलाइन के आउटपुट से दस्तावेज़ों को लक्ष्य संग्रह में सम्मिलित करता है जब वे पहले से मौजूद नहीं होते हैं (
_id
के आधार पर) - यह मामला है{ "_id" : "id_3", "a" : 38 }
) -
लक्ष्य संग्रह के रिकॉर्ड को बदल देता है जब एकत्रीकरण पाइपलाइन लक्ष्य संग्रह में मौजूद दस्तावेजों का उत्पादन करती है (
_id
के आधार पर) - यह{ "_id": "id_1", "a": 12 }
का मामला है{ "_id" : "id_1", "a" : 34 }
. द्वारा प्रतिस्थापित किया गया )