【问题标题】:find by key in a map in grails domain mongodb在grails域mongodb的地图中按键查找
【发布时间】:2014-05-30 23:34:09
【问题描述】:

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

我的域类似于:

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

数据库中的用户数据如下:

{
        "_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" 的用户。 请帮忙

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。以下代码也有效: ArrayList userList = User.createCriteria().list() { eq("baseAddr.city", "New Delhi") }
    【解决方案2】:

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

    您应该在 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"])
    

    【讨论】:

    猜你喜欢
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2013-06-12
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多