如何在MongoDB中的嵌入文档中插入新数据

时间:2015-11-29 18:52:03

标签: mongodb mongodb-query

我有一份关于公司员工的文件,每个员工都有多个地址。这是一个嵌入式文档

{
   _id: 12,
   emp_name: "Joy Pett",
   emp_gender: "Male",
   emp_address: [
                  {
                  street: "123 Fake Street",
                  city: "Faketon",
                  state: "MA",
                  },
                  {
                  street: "1 Some Other Street",
                  city: "Boston",
                  state: "MA",
                  }
              ]
}

现在我想为这名员工插入一个新地址。为该员工插入新地址的查询是什么?

1 个答案:

答案 0 :(得分:1)

想要的是更新您的文档。您需要使用update()方法和$push运算符,该运算符将指定值附加到数组。

演示

更新操作前的文档。

{ 
        "_id" : 12,
        "emp_name" : "Joy Pett",
        "emp_gender" : "Male",
        "emp_address" : [
                {
                        "street" : "123 Fake Street",
                        "city" : "Faketon",
                        "state" : "MA"
                },
                {
                        "street" : "1 Some Other Street",
                        "city" : "Boston",
                        "state" : "MA"
                }
        ]
}

现在让我们将以下地址推送到" emp_address":

{
    street: "125 Fake2 Street2",
    city: "Faketon2",
    state: "SA"
}

我们的查询:

db.collection.update({ '_id': 12 }, 
    { '$push': { 
        'emp_address': {
            street: "125 Fake2 Street2",
            city: "Faketon2",
            state: "SA"
        }
    }}
)

我们的更新操作后。

{
        "_id" : 12,
        "emp_name" : "Joy Pett",
        "emp_gender" : "Male",
        "emp_address" : [
                {
                        "street" : "123 Fake Street",
                        "city" : "Faketon",
                        "state" : "MA"
                },
                {
                        "street" : "1 Some Other Street",
                        "city" : "Boston",
                        "state" : "MA"
                },
                {
                        "street" : "125 Fake2 Street2",
                        "city" : "Faketon2",
                        "state" : "SA"
                }
        ]
}

您还可以使用$addToSet来避免数组中的重复地址。