Meine Mongodb sieht folgendermaßen aus
{ "_id" : ObjectId("4de20ef97065cc77c80541fd"),
"todo" : [
{
"id" : 1,
"desc" : "hi",
"done" : 0
},
{
"id" : 2,
"desc" : "hello",
"done" : 0
}
], "user" : "saturngod" }
Ich aktualisiere die Daten also folgendermaßen.
db.tasks.update({user:'saturngod','todo.id':2},{"$set":{"todo.$.done":1}});
es funktioniert gut in Mongodb-Cli, aber kann nicht in Ihrem Node-Mongodb-native Treiber arbeiten.
Ich habe einen Code wie folgt geschrieben
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)
});
Fehlerrückgabe Nullwert und Rückruf funktionieren auch. Die Daten wurden jedoch nicht in der Datenbank aktualisiert.
Aktualisiert: Ich habe festgestellt, dass 'todo.id':taskId keine Zeilen finden kann. Es funktioniert in mongo cli aber nicht in mongodb-native nodejs
vollständige Quelle unter : https://github.com/saturngod/tatoo/blob/master/data-provider.js