次のような検索パターンを使用して、clojure から mongo db にアクセスしたいと考えています。
find({Keywords: /search-pattern/})
「画像」コレクションを含む「ソウルフライヤー」というデータベースがあり、各メンバーには、それが表す画像からのexifキーワードの配列を含む「キーワード」フィールドがあります。mongo Java シェルから自分の画像を検索するには、次のようにします。
db.getCollection('images').find({Keywords: "Iain Wood"})
すると、キーワード「Iain Wood」を含むすべてのエントリのリストが返されます。replでこれを行うと、これはclojureでも正常に機能します。
(def connection (mg/connect))
(def db (mg/get-db connection "soulflyer"))
(seq (mc/find db "images" {"Keywords" "Iain Wood"}))
ただし、キーワードの部分一致を検索したい。これは、次のようなコマンドを使用して Java シェルから正常に機能します。
db.getCollection('images').find({Keywords: /Iain/})
予想通り、「Iain」を含むキーワードを持つすべての画像が返されました。ただし、これを clojure から機能させる方法が見つかりません。
(seq (mc/find db "images" {"Keywords" "/Iain/"}))
空のリストを返します
(seq (mc/find db "images" {"Keywords" /Iain/}))
(seq (mc/find db "images" {"Keywords" '/Iain/'}))
(seq (mc/find db "images" {"Keywords" \/Iain\/}))
(seq (mc/find db "images" {"Keywords" "\/Iain\/"}))
LispReader$ReaderException を返すか、repl をフリーズしてください。
単純なパターンマッチで clojure/monger を検索するにはどうすればよいですか?