情况:
我有一个名为'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')。
我该怎么做?
非常感谢任何帮助!
答案 0 :(得分:1)
假设SamAccountName
是唯一的:
db.employees.update({
{ SamAccountName: "jsmith", directReports.SamAccountName: "jdoe" },
{ $set: { directReports.$.status: "Lunch" } }
})
根据此问题的标签,由于您使用的是Mongoose,请务必正确更新您的架构。您可以考虑重新设计架构以利用Mongoose query population。
答案 1 :(得分:0)
我认为你需要在模型中添加'status'值和'launch'值,然后创建一个更新所有员工数据的函数。 希望它有所帮助