首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能解决这个问题呢pymongo.errors.OperationFailure?

我怎样才能解决这个问题呢pymongo.errors.OperationFailure?
EN

Stack Overflow用户
提问于 2020-10-06 02:48:11
回答 2查看 1.2K关注 0票数 0

我正试着在我的数据库中搜索书名,但我做不到。

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb+srv://LOGIN:PASS@cluster0.ye4cx.mongodb.net/info?retryWrites=true&w=majority&ssl=true&ssl_cert_reqs=CERT_NONE")
mydb = myclient["info"]
mycol = mydb["comics"]

find = mycol.find({"title": {"$search": "68"}})

for f in find:
    print(f)

但是我得到了这个错误

代码语言:javascript
复制
raise OperationFailure(msg % errmsg, code, response,
pymongo.errors.OperationFailure: unknown operator: $search, full error: {'operationTime': Timestamp(1601923289, 13), 'ok': 0.0, 'errmsg': 'unknown operator: $search', 'code': 2, 'codeName': 'BadValue', '$clusterTime': {'clusterTime': Timestamp(1601923289, 13), 'signature': {'hash': b'\x82\x91\xc5\xd4r\xd6\xbf\xbc\x13i\xe5\x83b\xd2\x9eUv\xb8\x89/', 'keyId': 6869109962937729027}}}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-06 03:10:54

您需要使用$text运算符才能使其工作。不要忘记在title字段上创建索引。

代码语言:javascript
复制
import pymongo
from pymongo import TEXT

myclient = pymongo.MongoClient("mongodb+srv://LOGIN:PASS@cluster0.ye4cx.mongodb.net/info?retryWrites=true&w=majority&ssl=true&ssl_cert_reqs=CERT_NONE")
mydb = myclient["info"]
mycol = mydb["comics"]

#Creating index on title
mycol.create_index([('title', TEXT)], default_language='english')

find = mycol.find({"$text": {"$search": "68"}})

for f in find:
    print(f)

这将搜索所有索引字段并返回匹配字段。有关official documentation的更多详细信息,请参阅。

票数 2
EN

Stack Overflow用户

发布于 2020-10-06 09:41:53

$search是一个聚合管道运算符。有关正确用法,请参阅https://docs.atlas.mongodb.com/reference/atlas-search/query-syntax/#query-syntax-ref。不能在查找查询中指定它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64214477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档