如何在没有联接的情况下基于另一个集合更新一个集合?

时间:2020-04-27 22:42:31

标签: mongodb

我有一个类似的收藏集:

transactions
{
  "_id": ...,
  "status": "new"
}


processed

{
  "_id": id value from collection above
}

因此,如果已处理的集合中有记录,我想将事务收集状态值更新为“已处理”。

已处理的id值来自交易记录收集id。

这是否可能在mongo控制台中执行?还是必须使用代码来完成?

1 个答案:

答案 0 :(得分:1)

您可以在聚合的$merge阶段进行此操作。

  • 删除除_id之外的所有字段
  • 添加具有更新值的所有字段
  • 与其他收藏合并
db.procecessed.aggregate([
   {$project:{_id:1}},
   {$addFields:{status:"processed"}},
   {$merge:"transactions"}
])