2011-05-29 3 views
1

db.tasks.find ({user: "saturngod"});requête MongoDB pour la mise à jour

est retour

{ "_id" : ObjectId("4de20ef97065cc77c80541fd"), 
"todo" : [ 
    { 
     "id" : 1, 
     "desc" : "hi", 
     "done" : 0 
    }, 
    { 
     "id" : 2, 
     "desc" : "hello", 
     "done" : 0 
    } 
], "user" : "saturngod" } 

Je veux mettre à jour DONE = 1 lorsque todo.id = 1

Alors, je l'ai écrit

>db.tasks.update({'todo.id':1},{"$set":{todo:{done:1}}}); 

J'ai perdu tous todo et le seul ensemble fait: 1

db.tasks.find();

{ "_id" : ObjectId("4de20ef97065cc77c80541fd"), "todo" : { "done" : 1 }, "user" : "saturngod" } 

Comment mettre à jour la valeur? Je veux faire comme ça

{ "_id" : ObjectId("4de20ef97065cc77c80541fd"), 
"todo" : [ 
    { 
     "id" : 1, 
     "desc" : "hi", 
     "done" : 1 
    }, 
    { 
     "id" : 2, 
     "desc" : "hello", 
     "done" : 0 
    } 
], "user" : "saturngod" } 

Répondre

5

a obtenu.

db.tasks.update({'todo.id':1},{"$set":{"todo.$.done":1}});