2016-08-10 4 views
10

मेरे संग्रह में, केवल एक दस्तावेज़ है।त्रुटि: अपडेट ऑपरेशन दस्तावेज़ में परमाणु ऑपरेटरों को अद्यतन होना चाहिए, जब अद्यतन चल रहा है

> db.c20160712.find() 
{ "_id" : ObjectId("57ab909791c3b3a393e9e277"), "Dimension_id" : 2, "Attribute" : "good", "Hour" : "20160712_06", "Frequency_count" : 100 

मैं दस्तावेज़ को प्रतिस्थापित करने के लिए updateOne चलाने के लिए चाहता हूं। लेकिन Error: the update operation document must contain atomic operators क्यों है?

> db.c20160712.updateOne({ "Attribute" : "good"}, {"Type" : "DVD", "Title" : "Matrix, The", "Released" : 1999, "Genre" : "Action"}, { upsert: true}) 
2016-08-10T16:37:57.089-0400 E QUERY [thread1] Error: the update operation document must contain atomic operators : 
[email protected]/mongo/shell/crud_api.js:493:1 
@(shell):1:1 

उपरोक्त आदेश में दूसरे और तीसरे तर्क The Definitive Guide to MongoDB: A complete guide to dealing with Big Data ... By Eelco Plugge, David Hows, Peter Membrey, Tim Hawkins

मेरे MongoDB 3.2 है में एक उदाहरण से आता है। धन्यवाद।

उत्तर

3

मेरा मानना ​​है कि यह अपडेट को शुरू करने के दुष्प्रभाव के रूप में बदला गया था() और अपडेट मैनी() को कुछ हद तक एक सुरक्षित दस्तावेज़ के रूप में उपयोगकर्ता के गलती से पूरे दस्तावेज़ को ओवरराइड करने से रोकने के लिए।

आप बहु: सत्य निर्दिष्ट किए बिना replaceOne() विधि या अद्यतन() का उपयोग कर सकते हैं।

14

दूसरे पैरामीटर के लिए गलत वाक्यविन्यास। कृपया the docs देखें। यह होना चाहिए:

db.c20160712.updateOne(
    { "Attribute" : "good" }, 
    { $set: {"Type" : "DVD", "Title" : "Matrix, The", "Released" : 1999, "Genre" : "Action" } }, 
    { upsert: true } 
); 
+0

मैं थोड़ी परेशान हूं "मैं अभी अपडेट नहीं करता" भाग के साथ थोड़ा परेशान हूं। ** अपडेट ** फ़ंक्शन से आप और क्या उम्मीद करते हैं? –

+0

मैं एक संपूर्ण मिलान दस्तावेज़ अद्यतन करना चाहता हूं। – Tim

+1

आपका मतलब है दस्तावेज़ को "प्रतिस्थापित करें"? फिर आपको @ डायुबर्ग की सलाह का पालन करना चाहिए और सही कार्य का उपयोग करना चाहिए। –

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