java - 在 mongodb 中查找与集合不同的东西

标签 java mongodb mongodb-java mongodb-java-3.3.0

我们以前从集合中查找不同元素的实现是:

List<String> names = mongoClient.getDB(dbName).getCollection(collectionName).distinct(NAME_KEY);

尝试使用 mongo 3.3.0+ 将其升级到当前的实现是:

List<String> names = mongoClient.getDatabase(dbName)
                        .getCollection(collectionName, TDocType.class)
                        .distinct(NAME_KEY, String.class); // compile error - required Class<TResult> 

也试过了

.distinct(NAME_KEY, TDocType.class)  // doesn't work                      

在这种情况下,可迭代对象的目标类型应该是什么?

编辑 - 问题不是 Get distinct records values 的副本因为在 mongodb-java-driver 升级后实现发生了变化。

最佳答案

你可以尝试这样的事情。

DistinctIterable<String> iterable = mongoClient.getDatabase(dbName).
            .getCollection(collectionName, TDocType.class).distinct(NAME_KEY, String.class);
MongoCursor<String> cursor = iterable.iterator();
List<String> list = new ArrayList<>();
while (cursor.hasNext()) {
    list.add(cursor.next());
 }

关于java - 在 mongodb 中查找与集合不同的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246302/

相关文章:

java - 实例 boolean 变量的 NullPointerException

java - 聚合框架 - 组操作抛出 NumberFormatException

java - Mongodb更改文档字段名称

Java+MongoDB 托管

java - Mockito 3.6 : Using mockStatic in @Before or @BeforeClass with JUnit4

java - 你如何实例化一个内部类并实现一个额外的接口(interface)

java - 在 <Android M 版本中获取 CheckBox 默认 Drawable

mongodb - MongoDB中的集合ID长度

MongoDB 重命名收集失败,返回 "exceeds maximum length of 32, allowing for index names"

MongoDB Spark Connector - 聚合速度慢