Объект проекта MongoTemplate как список одного объекта - PullRequest
1 голос
/ 18 июня 2020

Я использую 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();

1 Ответ

1 голос
/ 18 июня 2020

Для этого вы можете использовать операции group и project,

Сначала мы group id, имя, возраст ниже _id атрибута и pu sh все общие 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")
)
...