mongodb - Grails-Mongo检查包含在域的列表条件查询中

标签 mongodb grails gorm criteria

我将GRILL 3.3.5和GORM版本6.1.9一起使用

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

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
}

任何帮助,将不胜感激。

最佳答案

我不会在mongo中使用标准查询,因为它们几乎不能反射(reflect)面向文档的范例。

请改用native查询,因​​为它们功能更强大:

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

关于mongodb - Grails-Mongo检查包含在域的列表条件查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51749214/

相关文章:

mongodb如何仅从查找查询返回值列表

ios - ISO8601 格式在 MongoDB 和 iOS 中不同

java - 如何在grails应用程序中创建一个新目录来存储用户可以下载的jasper报告文件

hibernate - GORM标准按绝对值排序

hibernate - grails或 hibernate 条件以仅按时间分量进行搜索

带有嵌入式文档的 MongoDB 数据库设计

java - 如何在集成测试中测试 Mongo 索引?

grails - 尊重过滤网

Grails 3 和 IntelliJ 无法启动项目

grails - 在Grails中映射旧数据库表时避免表更改?