如何知道 MongoDB 中的 $merge 何时完成

问题描述 投票:0回答:1

我有一个以 $merge 阶段结束的聚合管道。

db.collection("mycoll").aggregate([..., {$merge:{into:"myview"}}])

我必须在运行时生成物化视图并让它们保持最新的变化。

我面临的问题是,如果 $merge 尚未完成,并且我尝试对目标集合运行更新,它只会更新已合并的文档,而其余文档将插入过时的值。

为了解决此问题,我需要在合并运行时延迟或阻止更新。

我似乎无法找到一种方法来知道合并何时完成。


使用 $merge 时聚合返回的游标为空,因此我无法使用游标进行跟踪。

查看 currentOp 似乎没有显示 $merge 的聚合,仅显示合并正在进行的每个文档的单独更新。

我如何知道合并何时完成?

node.js mongodb aggregation-framework
1个回答
0
投票

我发现我可以向我的聚合添加注释,并且它由 Mongo 在 $currentOp 输出中来自该聚合的所有更新中传播。

所以我可以在我的 $merge 聚合中添加评论,如下所示:

db.collection("mycoll").aggregate([..., {$merge:{into:"myview"}}], comment:"mycomment"});

稍后使用 $currentOp 搜索它,如下所示:

 db.getSiblingDB("admin").aggregate([{$currentOp:{}},{$match:{"command.comment":"mycomment"}},{$limit:1}]);
© www.soinside.com 2019 - 2024. All rights reserved.