mongodb - Grails-Mongo 检查包含在域的列表条件查询中
问题描述
我正在使用带有 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 之类的类型获取相机时。我无法使用以下功能获得结果..
def getCameraListByType(String type){
def cameraInstanceList = Camera.createCriteria().list {
ilike("typesInclude","%${type}%")
}
return cameraInstanceList
}
任何帮助,将不胜感激。
解决方案
我不会在 mongo 中使用标准查询,因为它们几乎不反映面向文档的范例。
改用native
查询,因为它们更强大:
def getCameraListByType(String type){
Camera.collection.find( [ typesInclude:[ $regex:/$type/, $options:'i' ] ] ).collect{ it as Camera }
}
推荐阅读
- terraform - Terraform 我得到 count.index 总是 0
- json - 使用 powershell 的 Zscaler API Json 问题
- python - 分组方式适用于多列?
- three.js - Three.js:如何使用相机旋转值在轴上旋转球体
- python - 如何从具有多个值的 groupby 对象中获取最大值?
- angular - 角 | 不同项目之间的共享模块
- sql - 多个子集的查询优化
- c# - 如何使抛出的物体根据其抛出的方向自动旋转?
- google-apps-script - 设置 SpreadsheetApp.flush(); 和实用程序.sleep(5000); 脚本中的行位置(Google App 脚本)
- string - 在SAS中的数字之后提取字符串