【问题标题】:Dynamic MongoDb queries in GrailsGrails 中的动态 MongoDb 查询
【发布时间】:2012-02-01 14:23:53
【问题描述】:

我在 Grails 中有一个类似的域

class User {
    static mapWith = "mongo"

    ObjectId id
    String name
    String address
    Integer age
}

我正在 Grails 中构建搜索前端,以使用 MongoDb plugin 查询 MongoDb 数据库。可以对数据库中的任何字段进行搜索,并且不得在查询中使用用户未设置的任何字段。 IE。不得将任何字段与 null 进行比较。例如,将所有字段留空将返回所有用户,但搜索 name 仅返回与 name 匹配的文档。

最初我的查询很简单,我在控制器中使用了User.find(new User(params));,效果很好。现在我还需要能够使用大于和小于的间隔查询整数字段。我查看了withCriteria() 并根据用户设置的字段构建查询,但到目前为止我没有成功。

TL;DR 如果我不知道用户想要在查询中包含哪些字段,我该如何进行查询?

【问题讨论】:

    标签: grails mongodb grails-orm


    【解决方案1】:

    我通过使用withCriteria() 解决了这个问题:

    def c = User.createCriteria()
    def users = c.list {
        if(params.name)
            eq('name', params.name)
        if(params.address)
            eq('address', params.address)
        if(params.age_gt?.isInteger())
            gt('age', params.age_gt as Integer)
        if(params.age_lt?.isInteger())
            lt('age', params.age_lt as Integer)
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 2015-04-09
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多