今後の MongoDB 2.4 では全文検索がサポートされます。
次のようなコマンドを使用して、mongo シェルでこれを行います。
db.players.runCommand("text", {
"search": "alice",
"project": {"name": 1, "_id": 0},
"limit": 10})
これを pymongo に移植するとき、pymongoクラスrunCommand
で定義されていないという事実に対処する必要があります。実際のCollection
コマンドが何であるかを理解できたので、これはシェルで機能しました:
db.runCommand({
"text": "players",
"search": "alice",
"project": {"name": 1, "_id": 0},
"limit": 10})
働いた。しかし、これはpymongoでこれを機能させる方法を正確には教えてくれません。私は試した:
db.command({
"text":"players",
"pipeline": [
("search","alice"), ("project",{"name":1,"_id":0}), ("limit",10)
]})
機能しませんでした(「検索が指定されていません」と表示されました)。私も試しました:
db.command({
"text": "players",
"search": "alice",
"project": {"name": 1, "_id": 0},
"limit":10})
もちろん、「no such cmd: project」で失敗します。
たとえば、 and のみを使用するsearch
と、物事を機能させることができますlimit
db.command({
"text": "players",
"search": "alice",
"limit": 10})
しかし、私はピモンゴfilter
と一緒に使いたいです。project
プロジェクトとフィルターを使用して全文検索を行った人はいますか?
余談ですが、シェル コマンドから pymongo コマンドの形を推測する良い方法があるのではないでしょうか?