我使用mongoTemplate实现了一个投影,给出了如下结果:
{"resourcesInspected": ["CD0626UHEA", "CD0626UKE9"]}
{"resourcesInspected": ["CD0GNDPB1E"]}
{"resourcesInspected": ["CD0H7L789D", "CD0H7L8RF7"]}
{"resourcesInspected": ["CD0FTHYK2B"]}
{"resourcesInspected": ["CD04H5K4B1", "CD0725K788", "CD0725K58A"]}
{"resourcesInspected": ["CD06JXHJ8A", "CD04E9LCED"]}为此,我做到了以下几点:
static final String resourcesInspected ="resourcesInspected";
ProjectionOperation projectionOperation = Aggregation
.project(resourcesInspected).andExpression("split(resourcesInspected, ',')")
.as(resourcesInspected)
.andExclude("_id");
template.aggregate(newAggregation(projectionOperation),"kpi", DBObject.class).getMappedResults()
.forEach(System.out::println);现在,我真正想要的是将所有行分组在一个中,因为它是同一个字段,为了最终使每个(键,值)与所有值都是distinct,类似这样:
{"resourcesInspected": ["CD0626UHEA", "CD0626UKE9","CD0626UHEZ","CXX0626UHEA"]}对于我的上下文,我需要使用MongoOperations(mongoTemplate),我尝试了很多方法,但是我没有得到想要的结果,有人能帮我吗?
发布于 2022-02-18 15:07:51
你可以一起去
$unwind解构数组$group这是剧本
db.collection.aggregate([
{
"$unwind": "$resourcesInspected"
},
{
"$group": {
"_id": null,
"resourcesInspected": {
"$addToSet": "$resourcesInspected"
}
}
}
])Working 蒙戈游乐场
因此,在使用java代码时,需要添加以下内容
unwind("resourcesInspected"),
group()
.addToSet("$resourcesInspected").as("resourcesInspected")https://stackoverflow.com/questions/71175558
复制相似问题