2010-09-27 38 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