使用Mongo低级API时,groovy代码中该行的等价物是什么?
db.countrycodes.findOne({"Country":"Antarctica"})
这一行在Mongo shell中为我成功找到了适当的记录,但我在我的控制器方法中尝试了很多变种,并且我一直得到NULL。 Heres是我目前的失败尝试:
MongoClient mongoClient = new MongoClient("localhost", 27017)
DB db = mongoClient.getDB("twcdb");
DBCollection coll = db.getCollection('countrycodes')
println coll.find("Country":"Antarctica")
我知道我的集合和db是非NULL的,因为当我执行find()
时,我确实得到了一个有效的光标,我可以在其中打印集合中的第一条记录。这是我想要找到的记录:
{
"_id" : ObjectId("539848b2119918654e7e90b1"),
"Country" : "Antarctica",
"Alpha2" : "AQ",
"Aplha3" : "ATA",
"Numeric" : "10",
"FIPS" : "AY",
"IGA" : ""
}
答案 0 :(得分:1)
试试这个:
def cursor = coll.find()
def obj = cursor.next()
while (obj.Country != 'Antarctica') {
obj = cursor.next()
}
效率低下,每次都要遍历整个集合以查找记录,但最终会以'obj'作为您需要的记录。
答案 1 :(得分:0)
尝试下面的代码并查看它是否有效。
BasicDBObject query = new BasicDBObject("Country", "Antartica");
def cursor = coll.find(query)
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
有关详情,请点击此处:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/