MongoDB更新文档并添加新字段

时间:2014-07-16 21:35:20

标签: mongodb

我正在Mongo

制作一个简单的待办事项列表应用

以下是一个示例记录:

{ "_id" : ObjectId("53c6e4a86929336e097b18d6"), "list_id" : 7, "notes" : { "note_id_3" : { "description" : "buy all the bacon", "done" : false }}}

我在list_id属性上创建了一个唯一索引(而不是让每个访问过的列表的用户都有一个唯一的list_id,随附的备注将以这种方式存储。我现在尝试添加note哈希值的新notes

根据他们的文件我尝试了这个:

db.todos.update(
     {list_id: 7}, 
     { $push: { 
          notes: { 
            note_id_6: { “description”: “it works”, “done”: true}}}})

以及

db.todos.update(
         {list_id: 7}, 
         { $set: { 
              "notes.note_id_6": { 
                “description”: “it works”, “done”: true}}}})

但是我收到了错误SyntaxError: Unexpected token ILLEGAL而且我不确定我的语法的哪一部分是不正确的。

1 个答案:

答案 0 :(得分:1)

使用"代替(双引号):

db.todos.update(
 {list_id: 7}, 
 { $push: { 
      notes: { 
        note_id_6: { "description": "it works", "done": true}}}})

同样$push适用于数组。所以如果:

> db.todos.findOne()
{
    "_id" : ObjectId("53c6e4a86929336e097b18d6"),
    "list_id" : 7,
    "notes" : [
            {
                    "note_id" : 3,
                    "description" : "it works",
                    "done" : true
            }
    ]
}

添加方式是:

> db.todos.update({list_id: 7}, {$push: {notes: { "note_id": 4, "description": "doesn't works", "done": false}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })