2012-01-11 25 views
29

उदाहरण के लिए मैं '2012-01-01' ("समय": ISODate ("2011-12-31T13: 52: 40Z") पर सभी रिकॉर्ड अपडेट करना चाहता हूं।मोंगो कंसोल में दिनांक फ़ील्ड को कैसे अपडेट करें?

db.test.update({ time : '2012-01-01' }, false, true ) 

वापसी त्रुटि:

Assert failed : need an object 
Error("Printing Stack Trace")@:0 
()@shell/utils.js:35 
("assert failed : need an object")@shell/utils.js:46 
(false,"need an object")@shell/utils.js:54 
([object Object],false,true)@shell/collection.js:189 
@(shell):1 

Wed Jan 11 17:52:35 uncaught exception: assert failed : need an object 
+0

त्रुटि क्या है? –

उत्तर

47

आप इस तरह एक नया ISODate वस्तु बनाने के लिए की जरूरत है:

db.test.insert({"Time" : new ISODate("2012-01-10") }); 

यह दोनों अद्यतन के लिए और प्रश्नों के लिए सच है। ध्यान दें कि आपके क्वेरी सिंटैक्स गलत है, यह सभी वस्तुओं को अद्यतन करने पर विचार करने

db.test.update({}, { $set : { "time" : new ISODate("2012-01-11T03:34:54Z") } }, true, true); 

db.test.update({ criteria }, { newObj }, upsert, multi); 

उदाहरण के लिए, किया जाना चाहिए यह भी ध्यान रखें कि इस से

db.test.update({}, { "time" : new ISODate("2012-01-11T03:34:54Z") }, true, false); 

बहुत अलग है क्योंकि उत्तरार्द्ध मौजूदा दस्तावेज़ में नया फ़ील्ड जोड़ने या मौजूदा फ़ील्ड को अपडेट करने के बजाय ऑब्जेक्ट को प्रतिस्थापित करेगा। इस उदाहरण में, मैंने अंतिम पैरामीटर को false पर बदल दिया, क्योंकि बहु अपडेट केवल $ ऑपरेटरों के साथ काम करते हैं।

2

यदि आप किसी मौजूदा दिनांक फ़ील्ड में परिवर्तित करने की जरूरत है (MySQL प्रारूप 'yyyy-mm-dd' फ़े से आयात) आप ISODate कर सकते हैं दस्तावेजों के माध्यम से पाश इस तरह से:

/usr/bin/mongo yourdbname --eval "db.yourcollectionname.find().forEach(function(doc){doc.yourdatefield = new ISODate(doc.yourdatefield);db.yourcollectionname.save(doc)});" 
2

आप में यह कर सकते हैं आईएसओ तारीख

db.test.update({_id : 1}, { 
     $set : { 
     "time" : new ISODate("your current date") 
     } 
    }); 

लेकिन ध्यान दें नया Mongo 2.6 साथ कि आप एक वर्तमान दिनांक $currentDate साथ वास्तव में आसान करने के लिए दिनांक को अपडेट करने में सक्षम हो जाएगा बनाने के द्वारा ओल्ड-स्कूल तरीका है।

db.test.update({ _id: 1 }, { 
    $currentDate: { 
     time: true, 
    }, 
}) 
संबंधित मुद्दे