【发布时间】:2011-05-29 16:21:52
【问题描述】:
我的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-native 驱动程序中无法运行。
我写了这样的代码
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 找不到任何行。它在 mongo cli 中有效,但在 mongodb-native nodejs 中无效
完整来源: https://github.com/saturngod/tatoo/blob/master/data-provider.js
【问题讨论】: