当前位置: 首页 > 知识库问答 >
问题:

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

毕宇
2023-03-14

我有两个集合A和B,我在另一个集合B中有一个字段的引用,因此将两个结果聚合到:

[{名称:亚当,平均值:20.22,价格:24,_id:2},...]

集合A中的文件是:

[{“name”:“Adam”,“Average Count”:“0”,“Last name”:“Smith”,“_id”:2},…]

我想更新集合A中average count字段的所有默认值,以更正聚合后得到的值。这是一种在单个查询中更新所有文档的方法,还是我们可以更新聚合管道中的文档?


共有1个答案

从景曜
2023-03-14

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

从MongoDB 4.2开始,更新命令可以为更新使用聚合管道。该管道目前可以由以下阶段组成:$set、$unset和$replace ewith。

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

  • 修改文档数据模型以合并集合,并将更新与聚合管道一起使用

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

{ "$merge": { 
     into: "A", 
     on: "_id", 
     whenMatched: "replace", 
     whenNotMatched: "insert" 
}}
 类似资料:
  • 多亏了这里的人的帮助,我成功地在我的文档中找到了两个ID,并在另一个集合中找到了他们的代表文档。我需要采取的下一步是进一步查找一个“嵌套”ID(引用另一个集合中的文档)。 其结果如下: 我希望chieftain部分是这样的(这就是没有添加'last'$lookup'的chieftain文档的样子):

  • 我有一个mongodb集合的mongoose模式,我将其定义如下: 在数据库集合中,我当前有一个文档,它包含除以外的所有属性的值,用于测试目的。我有一个服务器endpoint,当被调用时,它应该发出一个PUT请求来更新文档并向sketches数组中添加一个对象: 在这个web服务中,我基本上试图通过用户名选择用户文档,用户名作为参数传递给url字符串,如下所示: 由于某种原因,当我尝试使用具有以下

  • 我有包含以下模式的文档的集合。我想过滤/查找所有包含性别女性的文档并汇总大脑评分的总和。我尝试了下面的语句,它显示了无效的管道错误。 架构:

  • 问题内容: 我有这些猫鼬模式: 如何返回所有带有最新消息子文档(限制1)的线程? 目前,我正在服务器端过滤结果,但出于性能考虑,我想在MongoDb中移动此操作。 问题答案: 您可以使用,,并使用类似以下方式进行操作:

  • 有人知道在Mongo3中更新封顶收藏的方法吗。2.我让它在2分钟内工作。我更新了一个收藏,基本上删除了它的所有内容,所以我知道它已经被处理过了。这样就会过时。 当我在3.2中执行同样的操作时,我在命令行上会出现以下错误。 无法更改封顶集合中文档的大小:318!=40 在这里,你可以看到我正在将文档从318字节缩减到40字节。 有办法做到这一点吗?

  • 主要内容:update() 方法,save() 方法在 MongoDB 中,可以使用 update() 和 save() 方法来更新集合中的文档。其中 update() 方法可以更新现有文档中的值,而 save() 方法则可以使用传入文档来替换已有文档。 update() 方法 update() 方法用于更新现有文档中的值,其语法格式如下: db.collection_name.update(     <query>,     <update>,