繁体   English   中英

聚合mongodb后如何更新所有文件?

[英]how to update all documents after aggregation mongodb?

我有两个集合AB ,我在其他集合B中引用了一个字段,因此汇总了两个结果:

[{"name":"Adam","Average-Count":"20.22","price":"24","_id":2}, ...]

集合A中的文件是:

[{"name":"Adam","Average-Count":"0","Last-Name":"Smith","_id":2},....]

我想更新集合A中的平均计数字段的所有默认值,以纠正我在聚合后获得的值是一种更新单个查询中的所有文档的方法,还是我们可以更新聚合管道中的文档?

有没有办法更新单个查询中的所有文档,或者我们是否可以更新聚合管道中的文档?

从MongoDB 4.2开始,update命令可以使用聚合管道进行更新。 该管道目前可以包括以下几个阶段: $ set$ unset$ replaceWith

由于您的问题涉及使用$ lookup阶段首先在管道中加入集合,因为这当前不是受支持的阶段,您可以:

  • 修改文档数据模型以组合集合,并将更新与聚合管道一起使用。
  • 保留数据模型,并使用$ merge聚合阶段

$merge可以合并结果(插入新文档,合并文档,替换文档,保留现有文档,使操作失败,使用自定义更新管道处理文档)到现有集合中。 例如:

{ "$merge": { 
     into: "A", 
     on: "_id", 
     whenMatched: "replace", 
     whenNotMatched: "insert" 
}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM