如何使用 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);
我是 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);