2016-02-16 6 views
6

मैं एक साधारण क्षेत्र को अद्यतन करने कर रहा हूँ नहीं है।मोंगो फेंक "तत्व नाम 'नाम' वैध 'अपवाद

var filterDocument = new BsonDocument { { "name", "alice" } }; 

var newDocument = new BsonDocument { { "name", "Alice" } }; 

collection.UpdateOne(filterDocument, newDocument); 

लेकिन जब मैं अद्यतन बयान तक पहुँचने मैं एक अपवाद {"Element name 'name' is not valid'."}

क्या गलत है मिल ? उस तत्व नाम के साथ

अद्यतन

यह करने के लिए फिर से लिखकर यह:

var filterDocument = new BsonDocument { { "x", "alice" } }; 

var newDocument = new BsonDocument { { "y", "Alice" } }; 

collection.UpdateOne(filterDocument, newDocument); 

अपवाद {"Element name 'y' is not valid'."}

इसके अलावा, UpdateOne() या UpdateMany() कोई फर्क नहीं पड़ता फेंक।

इसके अलावा, खोल से यह ठीक है।

> db.crud.update({name:'alice'},{name:'Alice'}) 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 
+0

अजीब ... क्या 'फ़िल्टर दस्तावेज़' या 'नया दस्तावेज़' के साथ "अमान्य नाम" है? – AustinWBryan

+0

अच्छा बिंदु! 'नया दस्तावेज़' दिखाई देता है। मैंने इसे अभी 'x' में बदल दिया है और उसी अपवाद को मिला है, लेकिन इसके बजाय 'x' के साथ। – BanksySan

+0

एचएम .. मैं कहने वाला था, शायद इसकी वजह यह है कि इसे कुछ शब्द के साथ मिश्रित किया गया है, लेकिन अनुमान नहीं है ... 'filterDocument' का नाम बदलकर 'y'' '' बदलने का प्रयास करें, फिर इसे बदलने का प्रयास करें 'एलिस" ' – AustinWBryan

उत्तर

11

update के विपरीत, updateOne एक अद्यतन ऑपरेटर की आवश्यकता होती है लगता है,

> db.test.updateOne({name:'alice'},{name:'Alice'}) 
2016-02-16T19:04:07.689+0000 E QUERY [thread1] Error: the update operation document must contain atomic operators 

> db.test.updateOne({name:'alice'},{$set: {name:'Alice'}}) 
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } 

... जिसका अर्थ है कि आपका दस्तावेज़ शायद दिखना चाहिए;

var newDocument = 
    new BsonDocument { { "$set", new BsonDocument {"name", "Alice" } } }; 

... या तुम सच में पूरे दस्तावेज को बदलने के लिए, replaceOne है, जो अपने मौजूदा दस्तावेजों के साथ काम करना चाहिए का उपयोग पूरे मिलान दस्तावेज़ को बदलने के लिए इसका मतलब है।

+0

मुझे आश्चर्य हुआ कि यह ऐसा कुछ था। वी के संपादन को बदलें। मैं इसे जाने दूंगा! – BanksySan

+0

ठंडा .. धन्यवाद: (वाई) –

संबंधित मुद्दे