首页 > 解决方案 > Spring Data Aggregation:访问引用的对象字段

问题描述

我有一个引用另一个集合(靴子)的 Mongo 集合(玩家)。我想使用 MongoTemplate 聚合来获得我需要的结果。

例子

球员合集

{
    "_id" : ObjectId("5acb22865c7ba60005e6c24b"),
    "name" : "Roberto Ayala",
    "isRetired" : false,
    "boot" : {
        "$ref" : "Boots",
        "$id" : ObjectId("5ab5fb6ac08f59b7397d3194")
    }
}

靴子系列

{
    "_id" : ObjectId("5ab5fb6ac08f59b7397d3194"),
    "model" : "F50",
    "Sponsor" : "Adidas"
    }
}

我想要实现的目标:返回一个带有玩家姓名和靴子型号的投影

代码

public Object Test(){
    AggregationOptions options = Aggregation.newAggregationOptions().cursor(new BasicDBObject()).build();
    Aggregation aggregation = Aggregation.newAggregation(
        Aggregation.project("name"));

    //Additional Aggregation methods

    return mongoTemplate.aggregate(aggregation,"Players",XYZ.class).getRawResults();
}

如何从“引导”字段中提取 Id,然后投影“模型”字段?

标签: javaspringmongotemplate

解决方案


推荐阅读