2010-09-27 39 views
1

什麼是Java中的等價CDE:相當於Java階查詢的MongoDB中

var result = collectionName.findOne() 
println(result.get("name").toString) 

爲了闡述,這是我的示例數據庫:

{ "_id" : ObjectId("4ca039f7a5b75ab98a44b149"), "name" : "kaustubh", "country" : "india" } 
{ "_id" : ObjectId("4ca03a85a12344a5e47bcc5c"), "name" : "rahul", "country" : "pakistan" } 
{ "_id" : ObjectId("4ca03a9ea12344a5e47bcc5d"), "name" : "swapnil", "country" : "lanka" } 
{ "_id" : ObjectId("4ca03b19a12344a5e47bcc5e"), "name" : "sagar", "country" : "nepal" } 

我運行在它下面的查詢:

query.put("country", "india"); 
    DBCursor cursor = collection.find(query); 
    while (cursor.hasNext()) { 
    System.out.println(cursor.next()); 
} 

,打印:

{ "_id" : { "$oid" : "4ca04b6b37a85ab92557218a"} , "name" : "kaustubh" , "country" : "india"} 

與集合中存在的次數一樣多。

我該如何制定一個查詢來獲得所有的名字,一次並獲得他們的計數。我閱讀文檔,並沒有遇到任何方式來做到這一點。

回答

0

試試這個

query.put("name", "kaustubh"); 
DBObject myDoc = collection.findOne(query); 
System.out.println(myDoc); 
+0

使用collection.distinct( 「國家」,新BasicDBObject 「名」, 「kaustubh」)以不同的方式工作 :) – theTuxRacer 2010-09-27 09:46:39

+0

鮮明的作品,首先它會找出所有的項目並會返回其中一個。但findOne會在第一個項目匹配時停止執行。與distinct相比,性能要好得多... Distinct對您的要求不好。 – RameshVel 2010-09-27 10:10:05

+0

我明白我錯誤地問了這個問題。我現在編輯它,爲此distinct()是必要的!然後,我將不同的值存儲在一個List中,並將另一個值中的每個值存儲起來。感謝您回答我的問題! – theTuxRacer 2010-09-27 10:42:42