MongoTemplate 项目对象作为一个对象的列表

MongoTemplate project Object as List of one Object

我正在使用 spring MongoTemplate,我有如下对象

主要对象,

{
    id: "001",
    name: "one",
    age: 12,
    hobby: "a"
}

{
    id: "001",
    name: "one",
    age: 12,
    hobby: "b"
}

投影结果,

{
    id: "001",
    name: "one",
    hobbyList: ["a", "b"]
}

这是我目前使用的聚合。它不起作用,我不知道如何组合这两个对象。我该如何解决这个问题?

mongoTemplate.aggregate(newAggregation(project("user.id","user.name")
    .and("hobby").as("hobbyList")), "User", User.class).getMappedResults();

可以使用groupproject操作来实现,

首先,我们将 group id、name、age 在 _id 属性下,并将所有常见的 hobbies 推送到 hobbyList 属性。

然后用project就是拉出所有分组的结果排除_id

newAggregation(
    Aggregation.group("id", "name", "age").push("hobby").as("hobbyList"), 
    Aggregation.project("_id.id", "_id.name", "_id.age", "hobbyList").andExclude("_id")
)