MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB में "$ pullAll को एक सरणी तर्क की आवश्यकता है लेकिन एक डबल दिया गया था" को ठीक करें

यदि आपको "$pullAll को एक सरणी तर्क की आवश्यकता है, लेकिन एक डबल दिया गया था " MongoDB में त्रुटि, ऐसा इसलिए है क्योंकि आपने प्रतिस्थापित करने के लिए मान के रूप में एक सरणी प्रदान नहीं की है।

उदाहरण

मान लीजिए कि हमारे पास निम्नलिखित दस्तावेजों के साथ एक संग्रह है:

{ "_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 ] }

और हम $pullAll . का उपयोग करना चाहते हैं उन दस्तावेज़ों में से किसी एक में मूल्य की सभी घटनाओं को बदलने के लिए।

समस्या कोड

यहां कोड का एक उदाहरण दिया गया है जो उपरोक्त त्रुटि का कारण बनता है:

db.foo.update( 
  { _id: 1 }, 
  { $pullAll: { bar: 7 } } 
)

परिणाम:

WriteResult({
	"nMatched" : 0,
	"nUpserted" : 0,
	"nModified" : 0,
	"writeError" : {
		"code" : 2,
		"errmsg" : "$pullAll requires an array argument but was given a double"
	}
})

ऐसा इसलिए हुआ क्योंकि हम 7 . मान को घेरना भूल गए थे चौकोर कोष्ठक के साथ। दूसरे शब्दों में, हम एक सरणी प्रदान करना भूल गए।

समाधान

यहाँ वही कोड है, इस समय को छोड़कर हमने एक सरणी के रूप में मान प्रदान किया है:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB आंतरिक सूची में कोई तत्व कैसे सम्मिलित करें?

  2. MongoDB - फ़ाइल का आकार बहुत बड़ा और बढ़ रहा है

  3. MongoDB नोड जाँचता है कि क्या ऑब्जेक्टिड मान्य है

  4. Mongodb:127.0.0.1:27017 से कनेक्ट करने में विफल, कारण:त्रुटि:10061

  5. MongoDB - सॉकेट के लिए अनुमति अस्वीकृत:/tmp/mongodb-27017.sock