0

我正在使用带有 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" 的用户。请帮忙

4

2 回答 2

1

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

您应该在 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"])
于 2014-04-16T09:35:17.933 回答
1

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

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

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

于 2014-04-21T06:29:32.220 回答