0

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.*/" }

したがって、クエリをワイルドカード検索ではなく、文字列としてのクエリにします。このクエリの概念を使用して、何らかの意味でこれを回避する方法はありますか?

前もって感謝します!

4

3 に答える 3

1

これは私にとってはうまくいきました:あなたのgroovyファイルで:

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

多かれ少なかれ、通常の mongodb クエリを使用しますが、{} を [] に置き換えます。

于 2013-12-27T20:53:58.897 に答える
1

正規表現クエリを使用するには、 $regex演算子でクエリ条件を定義します

def regexCondition = ['$regex': '/.*te.*/']
def criteria = ['testId': regexCondition]
db.log.find(criteria)
于 2013-01-11T09:36:47.000 に答える