MongoDB में, आप $pullAll . का उपयोग कर सकते हैं मौजूदा सरणी से निर्दिष्ट मानों के सभी उदाहरणों को हटाने के लिए ऑपरेटर।
$pullAll . का उपयोग करें update() . जैसी विधि के संयोजन के साथ , updateOne() , या updateMany() निर्दिष्ट दस्तावेज़/दस्तावेज़ों को परिवर्तन के साथ अद्यतन करने के लिए।
उदाहरण
मान लीजिए कि हमारे पास निम्नलिखित दस्तावेजों के साथ एक संग्रह है:
{ "_id" : 1, "bar" : [ 1, 7, 2, 3, 8, 7, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }
और मान लें कि हम 7 . के सभी मानों को हटाना चाहते हैं दस्तावेज़ 1 में सरणी से।
हम यह कर सकते हैं:
db.foo.update(
{ _id: 1 },
{ $pullAll: { bar: [ 7 ] } }
) आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) वह संदेश हमें बताता है कि एक दस्तावेज़ का मिलान हुआ और एक (यानी एक ही दस्तावेज़) को संशोधित किया गया।
आइए अब इस संग्रह पर एक नज़र डालते हैं:
db.foo.find() परिणाम:
{ "_id" : 1, "bar" : [ 1, 2, 3, 8, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }
हम देख सकते हैं कि दस्तावेज़ 1 में सरणी के सभी 7 . हैं निर्दिष्ट के अनुसार मान हटा दिए गए।
एकाधिक मान हटाएं
$pullAll . को हमने जो तर्क दिया है एक सरणी है, और इसलिए हम कई मानों को अल्पविराम से अलग करके निकाल सकते हैं।
उदाहरण:
db.foo.update(
{ _id: 2 },
{ $pullAll: { bar: [ 17, 18 ] } }
) आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) आइए अब संग्रह को फिर से देखें:
db.foo.find() परिणाम:
{ "_id" : 1, "bar" : [ 1, 2, 3, 8, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }
हम देख सकते हैं कि मान 17 और 18 दस्तावेज़ 2 में सरणी से हटा दिया गया है।
सभी दस्तावेज़ अपडेट करें
आप multi: true add जोड़ सकते हैं या updateMany() . का उपयोग करें मानदंड से मेल खाने वाले सभी दस्तावेज़ों को अपडेट करने की विधि।
जब आप ऐसा करते हैं, तो पहले क्वेरी दस्तावेज़ से किसी भी चयन मानदंड को हटा दें (जो यह निर्दिष्ट करता है कि कौन सा दस्तावेज़/अद्यतन करना है)। दूसरे शब्दों में, update() . के पहले तर्क के रूप में एक खाली दस्तावेज़ का उपयोग करें (या updateMany() ) विधि।
उदाहरण:
db.foo.update(
{ },
{ $pullAll: { bar: [ 1, 8 ] } },
{ multi: true }
) आउटपुट:
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 }) इस मामले में, हम देख सकते हैं कि तीन दस्तावेज़ मेल खाते हैं (क्योंकि संग्रह में तीन दस्तावेज़ हैं), और तीनों को संशोधित किया गया था (क्योंकि उनमें सभी निर्दिष्ट मान शामिल थे)।
आइए फिर से संग्रह की जाँच करें:
db.foo.find() परिणाम:
{ "_id" : 1, "bar" : [ 2, 3 ] }
{ "_id" : 2, "bar" : [ 0 ] }
{ "_id" : 3, "bar" : [ 15, 11, 0, 3 ] } हम देख सकते हैं कि सभी उदाहरण निर्दिष्ट के अनुसार अपडेट किए गए हैं।