即将推出的 MongoDB 2.4 支持全文搜索。
我们在 mongo shell 中使用命令执行此操作,例如
db.players.runCommand("text", {
"search": "alice",
"project": {"name": 1, "_id": 0},
"limit": 10})
现在,当将其移植到 pymongo 时,我们必须处理runCommand
未在 pymongoCollection
类上定义的事实。我能够弄清楚真正的命令是什么,所以这在 shell 中起作用:
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})
当然失败了:“没有这样的cmd:项目”。
如果我只使用search
and limit
,我可以让事情正常工作,例如
db.command({
"text": "players",
"search": "alice",
"limit": 10})
但我想使用filter
和project
pymongo。有没有人使用项目和过滤器进行全文搜索?
旁白:也许有一种从 shell 命令推断 pymongo 命令形状的好方法?