MongoDB - 需要帮助更新文档数组中的对象

时间:2016-03-28 20:05:59

标签: arrays mongodb object mongoose

情况:

我有一个名为'employees'的集合。此集合包含一系列管理器。每个管理器对象都有一个名为“directReports”的属性。此属性是表示其下属的对象数组。例如:

 db.employees.find({ name: 'John Smith' });

{
   "id" : 1234,
   "name" : "John Smith",
   "FirstName" : "John",
   "LastName" : "Smith",
   "SamAccountName" : "jsmith",
   "DepartmentName" : "Management",
   "SupID" : 0,
   "Email" : "jsmith@company.tld",
   "SupSamAccountName" : "bross",
   "SupName" : "Bob Ross",
   "directReports" : [
    {
        "id" : 5678,
        "name" : "Jane Doe",
        "FirstName" : "Jane",
        "LastName" : "Doe",
        "SamAccountName" : "jdoe",
        "DepartmentName" : "Agent",
        "SupID" : 1234,
        "Email" : "jdoe@company.tld",
        "SupSamAccountName" : "jsmith",
        "SupName" : "John Smith",
    },...]}

我想做什么:

我想向Jane Doe添加一个名为'status'的新属性(值为'Lunch')。

我该怎么做?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

假设SamAccountName是唯一的:

db.employees.update({
    { SamAccountName: "jsmith", directReports.SamAccountName: "jdoe" },
    { $set: { directReports.$.status: "Lunch" } }
})

根据此问题的标签,由于您使用的是Mongoose,请务必正确更新您的架构。您可以考虑重新设计架构以利用Mongoose query population

答案 1 :(得分:0)

我认为你需要在模型中添加'status'值和'launch'值,然后创建一个更新所有员工数据的函数。 希望它有所帮助