Spring Data MongoDB投影:构造包装数组及常量字段的实现问题
正确的Spring Data Mongo Aggregation API实现方案
你原代码里的nested()方法只能生成单个嵌套对象,无法构造出原生语句中数组包裹对象的facets结构。以下是匹配原生聚合逻辑的Spring Data写法:
ProjectionOperation projectionOperation = project("products") // 保持count字段的正确处理逻辑 .and("count.count").arrayElementAt(0).as("count") // 构造facets数组:用List包裹单个对象,设置常量name和关联items字段 .and(List.of( bindValue("name", "PRODUCT_CATEGORY") .and(bind("items", "$productCategory")) )).as("facets");
关键说明:
- 使用
List.of(...)模拟原生语句中的数组结构,将单个对象包装成数组形式 bindValue("name", "PRODUCT_CATEGORY")直接设置常量值的name字段,对应原生语句里的固定字符串bind("items", "$productCategory")将items字段关联到原集合的productCategory字段
这段代码生成的投影逻辑和你提供的原生MongoDB聚合语句完全一致。
内容的提问来源于stack exchange,提问作者Sydney
相关产品推荐
相关产品推荐

