簡體   English   中英

華麗與 MongoDB 發現不同

[英]Panache with MongoDB find distinct

我有帶有“標簽” arrays 作為屬性的文檔。 現在我想查詢所有不同的標簽項。

{ 
  "name": "test1",
  "tags": ["tag1","tag2", "tag3"]
},
{
  "name": "test2",
  "tags": ["tag1"]
}

mongo shell 中的解決方案:

db.ApiModel.distinct("tags")

這給了我:

["tag1", "tag2", "tag3"]

但是我怎樣才能用 Panache 達到同樣的效果呢? PanacheMongoEntity 不提供特定的不同方法。 我也不知道如何使用find方法來實現我的目標,或者是否可以使用這種方法。

我所能想到的就是找到所有帶有find("tags", "*")的標簽(是 * 通配符嗎?),然后處理 Java 中的重復項,但我不相信這是預期的用途。

您可以使用這兩種方法中的任何一種從集合test中獲取不同的tags

public List<String> getDistinctTags() {
        return Tags
                .<Tags>mongoCollection()
                .distinct("tags", String.class)
                .into(new ArrayList<String>());
}

public List<String> getDistinctTags() {
        return Tags
                .<Tags>streamAll()
                .flatMap(e -> e.tags.stream())
                .distinct()
                .collect(toList());
}

假設Tags class 定義如下並代表 Panache 實體:

@MongoEntity(collection="test")
public class Tags extends PanacheMongoEntity {
    public String name;
    public List<String> tags;
    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM