Java MongoDB 3.0驱动程序查询不带过滤器

Thi*_*ark 4 java mongodb-query

我如何可以查询不同的Java MongoDB的3.0驱动程序?

我试图从MongoDB中的位置集合查询唯一类别记录.在Mongo shell中,这很简单:db.locations.distinct("categories");

在Java中,它不一样.

MongoClient client = new MongoClient();
MongoDatabase db = client.getDatabase("yelp");

//this will not compile, although examples from before 3.0 do it this way
MongoCursor<Document> c = 
    db.getCollection("locations").distinct("categories").iterator();
Run Code Online (Sandbox Code Playgroud)

jye*_*min 15

为了避免使用distinct进行强制转换,MongoCollection API允许您为字段提供预期的不同值类型.因此,如果你知道它们都是字符串,你可以写:

MongoCursor<String> c = 
   db.getCollection("locations").distinct("categories", String.class).iterator();
Run Code Online (Sandbox Code Playgroud)

或所有数字:

MongoCursor<Number> c = 
   db.getCollection("locations").distinct("categories", Number.class).iterator();
Run Code Online (Sandbox Code Playgroud)

你仍然可以这样做:

MongoCursor<Object> c = 
   db.getCollection("locations").distinct("categories", Object.class).iterator();
Run Code Online (Sandbox Code Playgroud)

如果你不能保证你正在查询的字段值的类型.