Мой 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, но не может работать на вашем узлеРодной драйвер 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 не может найти ни одной строки.Он работает в Mongo Cli, но не работает в ноде mongodb
с полным исходным кодом: https://github.com/saturngod/tatoo/blob/master/data-provider.js