在grails域mongodb中的地图中按键查找

时间:2014-04-16 08:11:51

标签: mongodb grails gorm mongodb-java gorm-mongodb

我正在使用带有grails(最新版本)的mongodb插件。

我的域名类似于:

class User
{
  HashMap baseAddr
  static mapWith = "mongo"
}

DB中的用户数据如下:

{
        "_id" : NumberLong(1),
        "baseAddr" : {
                "buildingNo" : "",
                "level" : "",
                "side" : "",
                "street" : "asdfasdf",
                "zipcode" : "asdfasdf",
                "state" : null,
                "municipality" : null,
                "flatNo" : "adsfasdf",
                "city" : "New Delhi",
                "country" : "IN"
        },
        "version" : 0
}

我想找到所有使用grails动态查找器或条件的baseAddr.city ==“New Delhi”的用户。 请帮忙

2 个答案:

答案 0 :(得分:1)

您定义域模型的方式,我认为不可能使用finder或条件执行此操作。

您应该已经在User类中创建了一个地址域并将该域关联起来。

class User
{
  Address baseAddr
  static mapWith = "mongo"
}

Class Address
{
   String buildingNo
   ....
}

但是,根据您目前的实现,您可以直接在代码中使用Gmongo并获取数据。

def mongo = new GMongo()
def db = mongo.getDB("db")

def citydoc = db.user.find(["baseAddr.city": "New Delhi"])

答案 1 :(得分:1)

您可以使用gorm标准 这是代码

def testData =  User.withCriteria {
                eq("baseAddr.city", "New Delhi")
            }

我测试了这段代码,工作正常