如何使用 Mongo 模板在 java 中进行聚合

How to do aggregation in java using Mongo Template

我是 MongoDB 的新手!

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

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

使用 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);