原生Mongo聚合管道对应的等效Spring聚合管道如何实现
问题根源
你当前实现多了多余投影步骤的核心原因是:group阶段没有显式指定固定值作为_id,Spring Data MongoDB默认将未指定_id的分组操作的_id设为null,才需要额外补充投影阶段修改_id的值。
正确等效实现
直接在分组阶段通过Aggregation.literal()指定常量作为分组_id即可完全对齐原生管道逻辑,无需额外投影:
Aggregation.newAggregation( Aggregation.match(Criteria.where("_id") .is("COLLECTIONS_META")), Aggregation.unwind("value"), // 分组时直接指定固定_id为字面量COLLECTION_NAMES Aggregation.group(Aggregation.literal("COLLECTION_NAMES")) .push("value.suffix") .as("value") );
验证说明
上述代码转换为原生Mongo聚合管道后和你给出的原生查询完全一致,没有多余的投影步骤,执行结果完全相同。
内容的提问来源于stack exchange,提问作者Romeo Sierra
相关产品推荐
相关产品推荐

