Finding distinct from collections in mongodb
java, mongodb, mongodb-java, mongodb-java-3.3.0
Solution
Improved answer from @jyemin
List<String> list = mongoClient.getDatabase(dbName)
.getCollection(collectionName, TDocType.class)
.distinct(NAME_KEY, String.class)
.into(new ArrayList<>());
Original answer
You can try something like this.
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());
}
Problem
Our previous implementation for finding distinct elements from a collection used to be : ``` List<String> names = mongoClient.getDB(dbName).getCollection(collectionName).distinct(NAME_KEY); ``` Trying to upgrade this into the current implementation with mongo 3.3.0+ as tried is : ``` List<String> names = mongoClient.getDatabase(dbName) .getCollection(collectionName, TDocType.class) .distinct(NAME_KEY, String.class); // compile error - required Class<TResult> ``` Have also given a try to ``` .distinct(NAME_KEY, TDocType.class) // doesn't work ``` What shall be the target type of the iterable in this case? Edit - The question is not a duplicate of Get distinct records values since the implementation has changed over the upgrade of `mongodb-java-driver`.