我有两个集合 A 和 B ,并且我引用了其他集合 B 中的一个字段,因此将两个结果汇总到:
[{"name":"Adam","Average-Count":"20.22","price":"24","_id":2}, ...]
集合A中的文档为:
[{"name":"Adam","Average-Count":"0","Last-Name":"Smith","_id":2},....]
我想更新集合A中平均计数字段的所有默认值以更正聚合后获得的值 他们是在单个查询中更新所有文档的方法,还是我们可以在聚合管道中更新文档?
答案 0 :(得分:0)
是否可以通过单个查询来更新所有文档,或者是否可以在聚合管道中更新文档?
从MongoDB 4.2开始,update命令可以使用聚合管道进行更新。目前,管道可以包括以下阶段:$set,$unset和$replaceWith。
由于您的问题涉及到在$lookup阶段首先在管道中加入集合,因为当前尚不支持此阶段,所以您可以:
$merge
可以将结果(插入新文档,合并文档,替换文档,保留现有文档,操作失败,使用自定义更新管道处理文档)合并到现有集合中。例如:
{ "$merge": {
into: "A",
on: "_id",
whenMatched: "replace",
whenNotMatched: "insert"
}}