首页 > 解决方案 > 如何使用 Mongo 模板在 java 中进行聚合

问题描述

我是 MongoDB 的新手!

谁能帮助我如何编写java代码来转换下面的mongo聚合查询?目前,我正在以“spring-boot-starter-data-mongodb”作为依赖项的 Spring Boot 应用程序中编写此代码。我正在考虑使用 Mongo 模板通过以下查询获取分组文档。

db.getCollection('test').aggregate([  
{
    $group: {
        _id: { name: "$name", zip: "$recipients.0.address.postalcode" },
        groupedDocs: { $addToSet: "$$ROOT" }
    }
}
]);

标签: javamongodbspring-bootaggregation-frameworkmongotemplate

解决方案


使用 MongoTemplate 是正确的想法。您需要先像这样创建聚合:

var aggregation = Aggregation.newAggregation(
    Aggregation.group(Fields.from(
            Fields.field("name"),
            Fields.field("zip", "recipients.0.address.postalcode")
        )
    ).addToSet("$$ROOT")
);

当然,您可以使用静态导入使其更简洁,我是这样写的,这样您就可以更好地找到类。我不确定 $$ROOT 参考,你可能需要查一下。有了这个,你可以调用 MongoTemplate:

return mongoTemplate.aggregate(aggregation, "Test", Test.class);

推荐阅读