forEach का उपयोग करें और अलग-अलग एलिमेंट्स की जांच करें और कुछ शर्त के साथ save() का उपयोग करें।
नमूना डेटा बनाना (Information ऐरे और खाली different ऐरे)
> db.demo646.insertOne( {
"Information": [
{ id: 100, Name:"Chris" },
{ id: 100, Name:"Chris" },
{ id: 101, Name:"David" },
{ id: 100, Name:"Chris" }
],
"different": []
} )
अपडेट से पहले दस्तावेज़ देखना
> db.demo646.find().pretty();
{ "Information" : [ { "id" : 100, "Name" : "Chris" }, { "id" : 100, "Name" : "Chris" }, { "id" : 101, "Name" : "David" }, { "id" : 100, "Name" : "Chris" } ], "different" : [ ] }
एलिमेंट्स को दूसरे ऐरे में ले जाने की क्वेरी (id=101 वाले)
> db.demo646.find({}).forEach(function(d) {
d.different = d.Information.filter(function(v) { return v.id == 101 })
d.Information = d.Information.filter(function(v) { return v.id != 101 })
db.demo646.save(d)
} )
अपडेट के बाद दस्तावेज़ देखना
> db.demo646.find().pretty();
{ "Information" : [ { "id" : 100, "Name" : "Chris" }, { "id" : 100, "Name" : "Chris" }, { "id" : 100, "Name" : "Chris" } ], "different" : [ { "id" : 101, "Name" : "David" } ] }
व्याख्या: forEach प्रत्येक दस्तावेज़ को प्रोसेस करता है। JavaScript filter() का उपयोग करके id=101 वाले एलिमेंट्स को different ऐरे में कॉपी करता है, और id!=101 वाले को Information में रखता है। फिर save() पूरे दस्तावेज़ को अपडेट करता है।