测试数据:
professor:{
name:"temp1",
department:[
{name:"pro1",
review:[
{paper:"paper1",status:"review",paperid:"1"}
]}]}
我想更新状态"review"finish"帮助"。对于搜索我使用:
{
department: {
$elemMatch: {
review: {
$elemMatch: {
paperid: id
}
}
}
}}
如果您想更新状态为review
的所有文档,请使用:
db.collection.update(
{},
{$set: {"professor.department.$[].review.$[r].status": "finish"}},
{arrayFilters: [{"r.status": "review"}]}
)
看看它在操场的例子中是如何工作的
如果您只想更新department.name
是pro1
的地方,请使用:
db.collection.update(
{},
{$set: {"professor.department.$[d].review.$[r].status": "finish"}},
{arrayFilters: [{"d.name": "pro1"}, {"r.status": "review"}]}
)
看看它是如何在操场的例子中工作的- department
by specify paperid
db.collection.updateOne(
{},
{
$set: { "professor.department.$[].review.$[r].status": 'finish' }
},
{
arrayFilters: [{ "r.paperid": '1' }]
}
)