MongoDB查询更新

时间:2011-05-29 09:33:53

标签: mongodb

  

db.tasks.find({用户: “saturngod”});

返回

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

我想在todo.id = 1时更新done = 1

所以,我写了

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

我丢失了所有待办事项并且只完成了设置:1

  

db.tasks.find();

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

如何更新价值?我想这样做

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

1 个答案:

答案 0 :(得分:5)

得到了它。

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