在 mongodb 中查找不同于集合

Nam*_*man 5 java mongodb mongodb-java mongodb-java-3.3.0

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

List<String> names = mongoClient.getDB(dbName).getCollection(collectionName).distinct(NAME_KEY);
Run Code Online (Sandbox Code Playgroud)

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

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

也尝试过

.distinct(NAME_KEY, TDocType.class)  // doesn't work                      
Run Code Online (Sandbox Code Playgroud)

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

编辑- 该问题不是获取不同记录值的重复,因为实现在mongodb-java-driver.

use*_*814 6

你可以尝试这样的事情。

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());
 }
Run Code Online (Sandbox Code Playgroud)

  • 或者更简单: List&lt;String&gt; list = mongoClient.getDatabase(dbName).getCollection(collectionName, TDocType.class).distinct(NAME_KEY, String.class).into(new ArrayList&lt;&gt;()); (7认同)