首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringData MongoDB聚合投影排除

SpringData MongoDB聚合投影排除
EN

Stack Overflow用户
提问于 2021-08-05 06:50:52
回答 1查看 50关注 0票数 0

我正在尝试排除使用project这个(必要的)字段。我在这个问题上挣扎了很长时间。我可以排除其他(规范之外的)字段,但不能排除规范字段中包含必需的字段。

当我向spec_id请求时,我期望:

代码语言:javascript
复制
[
    {
        "spec": {
            "spec_id": "5",
            "parent_id": "2",
            "material": "plastic",
            "size": "L"
        }
    }
]

但它会返回

代码语言:javascript
复制
[
    {
        "spec": {
            "spec_id": "5",
            "parent_id": "2",
            "necessary": {
                "unit": "20X20",
                "dateOfManufacture": "2020",
                "madeIn": "KNOWN",
                "producer": "KNOWN",
                "importer": "KNOWN",
                "productionLocation": "KNOWN"
            },
            "material": "plastic",
            "size": "L"
        }
    }
]

我这里有个方法

代码语言:javascript
复制
public List<UnwindInventory> selectSpecWithoutNecessary(String spec_id) {
        UnwindOperation unwindOperation = Aggregation.unwind("spec");
        ProjectionOperation project = Aggregation.project().andExclude("name", "spec.necessary");
        MatchOperation match = Aggregation.
                match(Criteria.where("spec._id").is(spec_id));
        Aggregation aggregation = Aggregation.newAggregation(unwindOperation, match, project);

        return mongoOperations.aggregate(aggregation, Inventory.class, UnwindInventory.class).getMappedResults();

这是dto

代码语言:javascript
复制
@NoArgsConstructor
@AllArgsConstructor
@Data
public class UnwindInventory {
    private String inventory_id;
    private String name;
    private Spec spec;
    private Necessary necessary;

}
EN

回答 1

Stack Overflow用户

发布于 2021-08-06 01:46:12

解决了。我手动投影其中的每一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68661860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档