我在使用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.*/" }
因此,查询不是通配符搜索,而是将其作为字符串进行查询。 有没有办法在某种意义上使用这种查询概念来解决这个问题?
提前致谢!
答案 0 :(得分:3)
答案 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查询,但将{}替换为[]。