1
我有一個List
的對象,我需要在Morphia
中執行查詢,以獲得String
在給定對象中的另一個嵌入List
的唯一結果。如何在嗎啡中進行聚合?
對象類:
@Entity
public class Fruits {
@NotNull private Long id;
@NotNull private List<String> categories;
}
數據JSON格式:
水果:
{[
"id": 1234566,
"categories": ["A", "B", "C", "D"]
],
[
"id": 32434,
"categories": ["A", "C", "E", "F"]
],
[
"id": 32434,
"categories": ["A", "L", "M", "N"]
]
}
聚合的應該是其結果是:
[A,C,B,D,E,F,L,M,N]
的輸出是以排序的形式。我如何在嗎啡中實現這一點?我試圖搜索官方文檔,但無法找到提示。
任何幫助或提示將是可觀的。由於
EDIT-1
List<Fruits> fruitList = fruitControllerDao.search(fruitList);
List<Category> categories = new ArrayList<>();
datastore.createAggregation(Fruits.class)
.unwind("categories")
.group(Group.id(Group.grouping("categories")))
.sort(Sort.ascending("_id.categories"))
.project(Projection.projection("_id").suppress(),
Projection.projection("categories", "_id.categories"))
.aggregate(Category.class).forEachRemaining(categories::add);
,我已經在fruitList
創建
class Category {
private String category;
}
數據是不可用的,我需要在fruitList
申請aggregation
(簽出JSON格式)本身。
謝謝您的回答。 '_id'在這裏指'Fruits.id'。對? –
不客氣。沒有它從'group'生成的'_id'。添加了Mongo shell查詢用於比較,並在帖子中添加了一些解釋。 – Veeram
我想實現這個代碼,但是對於在哪裏以及如何在上面的代碼中使用'Fruit'對象數據感到困惑。你能幫我出來嗎?我的意思是如何在上面的Json上應用這個聚合查詢? –