Предстоящий MongoDB 2.4 поддерживает полнотекстовый поиск.
Мы делаем это в оболочке mongo с помощью команды, например
db.players.runCommand("text", {
"search": "alice",
"project": {"name": 1, "_id": 0},
"limit": 10})
Теперь, перенося это на pymongo, мы должны иметь дело с тем, что runCommand
не определен в классе pymongo Collection
. Мне удалось выяснить, что такое настоящая команда, поэтому это работало в оболочке:
db.runCommand({
"text": "players",
"search": "alice",
"project": {"name": 1, "_id": 0},
"limit": 10})
который работал. Но это точно не говорит мне, как заставить это работать на пимонго. Я пробовал:
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})
который, конечно же, терпит неудачу: "нет такого cmd: project".
Я могу заставить работать, если я использую только search
и limit
, например
db.command({
"text": "players",
"search": "alice",
"limit": 10})
но я хотел бы использовать filter
и project
с pymongo. Кто-нибудь получил полнотекстовый поиск, работающий с проектом и фильтром?
Помимо этого: Может быть, есть хороший способ вывести форму команды pymongo из команды оболочки?