2012-01-11 11 views
29

Örneğin, tüm kayıtları '2012-01-01' ("time": ISODate ("2011-12-31T13: 52: 40Z")) olarak güncellemek istiyorum.Mongol konsolunda tarih alanı nasıl güncellenir?

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

dönüş hatası:

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

Hata nedir? –

cevap

47

Böyle bir yeni ISODate nesne oluşturmak gerekir:

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

Bu güncellemeler için ve sorguları için her iki doğrudur. sorgu sözdizimi yanlış olduğunu unutmayın, bu Ayrıca, bu

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

çok farklı olduğuna dikkat

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

, tüm nesneleri güncelleştirmek düşünmeye Örneğin

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

olmalıdır çünkü ikincisi , var olan belgeye yeni bir alan eklemek veya varolan alanı güncellemek yerine nesnesini değiştirecektir. Bu örnekte, son değiştirmeyi false olarak değiştirdim, çünkü çoklu güncelleştirmeler yalnızca $ işleçleriyle çalışır. Varolan bir tarih alanını dönüştürmek gerekiyorsa

2

sizi ISODate için (MySQL formatına 'yyyy-aa-gg' fe ithal) can bu şekilde dokümanlar arasında döngü:

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

Sen bunu yapabilirsiniz ISO tarihi

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

Ama $currentDate ile gerçekten kolay bir tarihi geçerli tarih güncellemek mümkün olacak yeni Mongo 2.6 ile dikkat oluşturarak eski okul yolu.

db.test.update({ _id: 1 }, { 
    $currentDate: { 
     time: true, 
    }, 
}) 
İlgili konular