Grails Mongo低级API

时间:2014-06-24 16:55:24

标签: mongodb grails

使用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" : ""
}

2 个答案:

答案 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/