我在mongodb中有一份文件如下:
{
"_id" : 1,
"name" : "Christine Franklin",
"degrees" : [
{
"level" : "Master",
info:[ {"major" : "Biology",
"completion_year" : 2010,
"faculty" : "Science"}]
},
{
"level" : "Bachelor",
info : [{"major" : "Biology",
"completion_year" : 2008,
"faculty" : "Science"}]
}
]
}
我想只在“级别”为“Bachelor”的情况下将new_object(下面提到)添加到数组“info”中。如何在node.js中编写查询?
new_object = {"major" : "chemistry",
"completion_year" : 2010,
"faculty" : "Science"}
最终文档应如下所示:
{
"_id" : 1,
"name" : "Christine Franklin",
"degrees" : [
{
"level" : "Master",
info:[ {"major" : "Biology",
"completion_year" : 2010,
"faculty" : "Science"}]
},
{
"level" : "Bachelor",
info : [{"major" : "Biology",
"completion_year" : 2008,
"faculty" : "Science"},{"major" : "chemistry",
"completion_year" : 2010,
"faculty" : "Science"}]
}
]
}
您可以使用arrayFilters选项在update方法中使用$ push运算符
db.test.update(
{ _id: 1 },
{ $push : { "degrees.$[degree].info" :
{
"major" : "chemistry",
"completion_year" : 2010,
"faculty" : "Science"
}
}},
{ arrayFilters : [ {"degree.level" : { $eq: "Bachelor" } } ], multi : true }
)