来自grails / groovy的mongodb通配符查询

时间:2013-01-11 09:00:59

标签: mongodb grails groovy

我在使用Grails应用程序在MongoDB中发出通配符时遇到了一些问题。

基本上我现在这样做的方法是发出一个带有查询参数数组的find查询:

db.log.find(criteria)    -> where criteria is an array [testId:"test"]

只要我严格查询实际值,这就可以正常工作。但是,为了好玩,我尝试使用通配符搜索:

db.log.find(criteria) -> this time critera = [testId:/.*te.*/]

然而,在将Mongo查询日志视为:

之后
 query: { query: { testId: "/.*te.*/" }

因此,查询不是通配符搜索,而是将其作为字符串进行查询。 有没有办法在某种意义上使用这种查询概念来解决这个问题?

提前致谢!

3 个答案:

答案 0 :(得分:3)

使用Groovy Pattern快捷方式~指定您的查询是正则表达式。

db.log.find(['testId': ~/.*te.*/])

有关详细信息,请参阅此blog post

答案 1 :(得分:1)

要使用正则表达式查询,请使用$ regex operator

定义查询条件
def regexCondition = ['$regex': '/.*te.*/']
def criteria = ['testId': regexCondition]
db.log.find(criteria)

答案 2 :(得分:1)

这对我有用: 在你的groovy文件中:

db.collectionName.find([fieldName:[$regex:'pattern']])

或多或少,使用常规的mongodb查询,但将{}替换为[]。