我MongoDB是像下面
{ "_id" : ObjectId("4de20ef97065cc77c80541fd"),
"todo" : [
{
"id" : 1,
"desc" : "hi",
"done" : 0
},
{
"id" : 2,
"desc" : "hello",
"done" : 0
}
], "user" : "saturngod" }
所以,我更新這樣的數據。
db.tasks.update({user:'saturngod','todo.id':2},{"$set":{"todo.$.done":1}});
它在mongodb cli中工作正常,但無法在您的node-mongodb本地驅動程序中工作。
我寫了這樣的代碼
task_collection.update({user:username,'todo.id':taskId}, {"$set":{"todo.$.done":1}},{safe:true},function(error, result){
sys.puts("callback user:"+username+"id:"+taskId+"error:"+error);
if(error) callback(error,result);
else callback(null,result)
});
錯誤返回空值和回調也工作。但是,數據庫中的數據並未更新。
更新: 我發現'todo.id':taskId找不到任何行。它的工作在蒙戈CLI但
完整的源代碼在MongoDB的原生沒有的NodeJS工作: https://github.com/saturngod/tatoo/blob/master/data-provider.js
我修復了它並更新了我的問題,但沒有運氣。 – saturngod 2011-05-30 00:35:06