我已經實作了使用 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);
現在我真正想要的是將所有行歸為一個,因為它是同一個欄位,并且為了最終每個 (key,value) 有一個,所有值都是distinct,如下所示:
{"resourcesInspected": ["CD0626UHEA", "CD0626UKE9","CD0626UHEZ","CXX0626UHEA"]}
對于我的背景關系,我需要使用 MongoOperations(mongoTemplate),我嘗試了很多方法,但沒有得到想要的結果,有人可以幫我嗎?
uj5u.com熱心網友回復:
你可以和
$unwind解構陣列$group不重復地重建
這是腳本
db.collection.aggregate([
{
"$unwind": "$resourcesInspected"
},
{
"$group": {
"_id": null,
"resourcesInspected": {
"$addToSet": "$resourcesInspected"
}
}
}
])
作業Mongo游樂場
因此,使用您的 java 代碼,您需要添加以下內容
unwind("resourcesInspected"),
group()
.addToSet("$resourcesInspected").as("resourcesInspected")
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427336.html
標籤:爪哇 mongodb 弹簧靴 弹簧数据-MongoDB 蒙戈模板
