派头 MongoDB 发现不同
Panache with MongoDB find distinct
我有以“标签”数组作为属性的文档。现在我想查询所有不同的标签项。
{
"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;
// ...
}
我有以“标签”数组作为属性的文档。现在我想查询所有不同的标签项。
{
"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;
// ...
}