2016-03-05 13 views
0

我想在java中爲mongodb使用不同的查詢。在看這個鏈接它說我只能通過字段名:在java中使用不同的mongo查詢

https://api.mongodb.org/java/3.0/com/mongodb/DBCollection.html#distinct-java.lang.String-

所以我必須:

searchResults = playerCollection.distinct("team"); 

但它說,它無法解析方法不同(java.lang.String

它似乎認爲我必須把另一個類參數。但我不想要任何結果的子集。我只想要所有不同的球隊。

更新:我如何實例化的集合:

uri = new MongoClientURI("mongodb://<MongoURI>"); 
mongoClient = new MongoClient(uri); 
mongoDB = mongoClient.getDatabase(uri.getDatabase()); 
playerCollection = mongoDB.getCollection("players"); 
+0

請詳細說明如何定義/實例化'playerCollection'對象。 – AxxE

+0

使用3.2.0更新了原始帖子 – discodowney

回答

1

您嘗試使用的方法是爲DBCollection類定義的,但您將其稱爲MongoCollection<Document>類對象。因此,錯誤,因爲這兩個類具有相同名稱但簽名不同的方法。使用所需方法的方法是通過更改實例化DB和集合對象的方式。

uri = new MongoClientURI("mongodb://<MongoURI>"); 
mongoClient = new MongoClient(uri); 

//http://api.mongodb.org/java/3.0/com/mongodb/DB.html 
// create a object of the DB class 
mongoDB = mongoClient.getDB(uri.getDatabase()); 

//http://api.mongodb.org/java/3.0/com/mongodb/DB.html#getCollection-java.lang.String- 
playerCollection = mongoDB.getCollection("players"); 

// now that you have a DBCollection object you can use the distinct(String) method 
searchResults = playerCollection.distinct("team"); 

此外,對於V3.0棄用列表(http://api.mongodb.org/java/3.0/deprecated-list.html#class)不包括DB也不DBCollection類,所以你應該罰款。

+0

很感謝。將其分類。我以爲MongoCollection取代了DBCollection。歡呼聲清除 – discodowney

+0

@discodowney我相信從長遠來看,最終的遊戲將轉變爲模板/泛型類,這被認爲是更好的編程模式/實踐。 – AxxE

1

請檢查您的驅動程序版本?我相信Distinct(<string>)在3.0之前。現在它消失了。

請檢查

http://api.mongodb.org/java/3.0/com/mongodb/async/client/MongoCollection.html#distinct-java.lang.String-java.lang.Class-

同時檢查類型的mongoDb.getCollection,它應該是MongoCollection<Document>不`DbCollection」

例子:

DistinctIterable<Double> documents = playerCollection.distinct("aID", Double.class); 

for (Double document : documents) { 
    System.out.println(document); 
} 

哪裏aID是你獨特的領域。 distinct的第二個參數表示MongoDB文檔中aID屬性的類型。

希望它能幫助你。

+0

Im。所以如果我不能在這個版本中做到這一點,那麼我如何獲得不同的值? – discodowney

+0

'不同的()'是爲'DBCollection'類定義的,該類在> v3.0中尚未棄用。 – AxxE

+0

@AxxE感謝您的糾正 – Saleem