grails gorm mongodb `like` 标准中的功能
grails gorm mongodb `like` functionality in criteria
like
或 rlike
是否支持在集合的 属性 值中搜索字符串?
集合是否需要定义文本类型索引才能工作?不幸的是,我无法为 属性 创建文本索引。有 1 亿个文档和文本索引扼杀了性能(MongoDB 在单个节点上)。
如果没有文本索引无法做到这一点,我觉得没问题。我会寻找替代品。
给出以下合集:
Message {
'payload' : 'XML or JSON string'
//few other properties
}
在 grails 中,我创建了一个条件 return 我在有效负载中包含特定字符串的文档列表
Message.list {
projections {
like('payload' : searchString)
}
}
我也尝试使用 rlike('payload' : ".*${searchString}.*")
。它没有给我任何文件。
注意:当我在 Mongo shell 上触发本机查询时,我能够获取文档。
db.Message.find({payload : { $regex : ".*My search string.*" }}).pretty()
我以一种迂回的方式让它工作。我相信有一个更好的 grails 解决方案。标准方法不起作用。所以使用低级别 API 将 DBObjects 转换为域对象。
def query = ['payload' : [ '$regex' : /${searchString}/ ] ]
def dbObjects = Message.collection.find(query).skip(offset).limit(defaultPageSize).toArray()
dbObjects?.collect { new Message(new JsonSlurper().parseText(it.toString()))}
like
或 rlike
是否支持在集合的 属性 值中搜索字符串?
集合是否需要定义文本类型索引才能工作?不幸的是,我无法为 属性 创建文本索引。有 1 亿个文档和文本索引扼杀了性能(MongoDB 在单个节点上)。
如果没有文本索引无法做到这一点,我觉得没问题。我会寻找替代品。
给出以下合集:
Message {
'payload' : 'XML or JSON string'
//few other properties
}
在 grails 中,我创建了一个条件 return 我在有效负载中包含特定字符串的文档列表
Message.list {
projections {
like('payload' : searchString)
}
}
我也尝试使用 rlike('payload' : ".*${searchString}.*")
。它没有给我任何文件。
注意:当我在 Mongo shell 上触发本机查询时,我能够获取文档。
db.Message.find({payload : { $regex : ".*My search string.*" }}).pretty()
我以一种迂回的方式让它工作。我相信有一个更好的 grails 解决方案。标准方法不起作用。所以使用低级别 API 将 DBObjects 转换为域对象。
def query = ['payload' : [ '$regex' : /${searchString}/ ] ]
def dbObjects = Message.collection.find(query).skip(offset).limit(defaultPageSize).toArray()
dbObjects?.collect { new Message(new JsonSlurper().parseText(it.toString()))}