Spring 数据MongoDB: MergeOperation returns 整个集合。为什么?

Spring Data MongoDB: MergeOperation returns the whole collection. Why?

我是 运行 一个 MongoDB 聚合,其中最后一个阶段是 $merge,它将一些字段写入另一个集合。基本上,这个 $merge 应该只对单个文档产生影响(这就是为什么我们有 on: "_id".

下面是我如何使用 Java:

var merge = Aggregation.merge().intoCollection("items")
                .on("_id")
                .whenMatched(MergeOperation.WhenDocumentsMatch.mergeDocuments())
                .whenNotMatched(MergeOperation.WhenDocumentsDontMatch.discardDocument())
                .build();

var agg = Aggregation.newAggregation(match, group, merge);
var aggResult = mongoTemplate.aggregate(agg, "prices", Item.class);
  

聚合完成了所需的工作,我可以看到请求的文档已更改,但问题是aggregate() return集合中的所有文档。

这是一个主要缺点,当集合足够大时无法很好地扩展。

如何更改我的查询,以便它 return 仅显示更改的文档。或者如果不可能,只应用查询而不 returning 任何东西。

找到 并将与未来的读者分享:

mongoTemplate.aggregate(aggregation.withOptions(newAggregationOptions().skipOutput().allowDiskUse(true).build()), "collectionNme", EntityClass.class);