【问题标题】:Grails-Mongo Check Contains in Domain's List Criteria QueryGrails-Mongo 检查包含在域的列表条件查询中
【发布时间】:2018-08-08 14:28:26
【问题描述】:

我正在使用带有 GORM 版本 6.1.9 的 grails 3.3.5

在我的应用程序中,我创建了如下域..

class Camera {
     String cameraId
     List<String> typesInclude

   static constraints = {
      typesInclude nullable: false
   }
}

现在我在相机集合中添加了一些记录。

db.camera.find().pretty()
{
    "_id" : NumberLong(1),
    "version" : NumberLong(0),
    "typesInclude" : [
        "T1"
    ],
    "cameraId" : "cam1"
}
{
    "_id" : NumberLong(2),
    "version" : NumberLong(0),
    "typesInclude" : [
        "T2"
    ],
    "cameraId" : "cam2",
}
{
    "_id" : NumberLong(3),
    "version" : NumberLong(0),
    "typesInclude" : [
        "T2",
        "T3"
    ],
    "cameraId" : "cam3",
}

现在,当我尝试像 T2 这样的类型获取 Camera By 时。我无法使用以下函数获得结果..

def getCameraListByType(String type){
    def cameraInstanceList = Camera.createCriteria().list {
         ilike("typesInclude","%${type}%")
    }
    return cameraInstanceList
}

任何帮助将不胜感激。

【问题讨论】:

    标签: mongodb grails grails-orm criteria


    【解决方案1】:

    我不会在 mongo 中使用条件查询,因为它们几乎不反映面向文档的范例。

    改用native 查询,因为它们更强大:

    def getCameraListByType(String type){
        Camera.collection.find( [ typesInclude:[ $regex:/$type/, $options:'i' ] ] ).collect{ it as Camera }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多