正規表現を含む文字列の配列であるフィールドについて、Casbah 経由で MongoDB にクエリを実行しようとしています。
例えば:
フィールドipsに文字列として保存されているipsのリストを持つMaschineがあります。ここで、サブネット 192.168 を持つすべてのマシンを検索したいと考えています。
私にとっては、すべてのエントリに正規表現が適用された配列をクエリすることはできず、エントリの1つがマシンに一致すると返されるようです。
そのようなクエリを作成する方法はありますか?
- 修理済み
ご協力いただきありがとうございます。
すべてが機能するようになりました。最後に、Casbah の 1 つの制限を回避する必要があります。これは、$or を使用してクエリに参加する必要があり、Casbah が正規表現の暗黙の欠落について不平を言うためです。
他のフィールドを追加した RegExp Array クエリの最終的なコードは次のとおりです。
val regexp = ".*" + parameter + ".*"
val nameQ = MongoDBObject("serverName" -> regexp.r)
val ipsQ = MongoDBObject("ips" -> regexp.r)
val bldr = MongoDBList.newBuilder
bldr += ipsQ
bldr += nameQ
val query = MongoDBObject("$or" -> bldr.result.asDBObject)
val result = find(query)
これは最適なコードではなく、パラメーターの文字列連結を修正する必要があります。しかし、それは機能します:)