列出集合时,为什么PyMongo会提供不支持的投影选项:$ substr?

dem*_*lem 7 mongodb pymongo

我有以下代码:

client = MongoClient(uri)
db = client['my_db']
print(db.collection_names())
#print(db.list_collection_names())
Run Code Online (Sandbox Code Playgroud)

我得到了错误

连接打印(db.collection_names())中的第17行的文件“ C:\ Users \ gwerner004 \ eclipse-workspace \ MongoTestRasa \ FirstTest.py”文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ database.py“,第715行,位于collection_names nameOnly = True,** kws)]文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \在list_collections ** kwargs中的第677行,“ site-packages \ pymongo \ database.py”中,文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ database.py “,第651行,在_list_collections游标中= self._command(sock_info,cmd,slave_okay)[”游标“]文件” C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ database.py”,第514行,在_command client = self .__ client中)文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ pool.py”,行579,在命令unacknowledged = unacknowledged中) “ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ network.py”,行150,在命令parse_write_concern_error = parse_write_concern_error中)文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ helpers.py“,第155行,在_check_command_response中引发OperationFailure(msg%errmsg,代码,响应)pymongo.errors.OperationFailure:不支持的投影选项:$ substr在命令parse_write_concern_error = parse_write_concern_error中,行150,在命令“未确认=未确认”中文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ network.py”中,行150 :_check_command_response中的第155行:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ helpers.py“,提高OperationFailure(msg%errmsg,代码,响应)pymongo.errors.OperationFailure :不支持的投影选项:$ substr在命令parse_write_concern_error = parse_write_concern_error中,行150,在命令“未确认=未确认”中文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ network.py”中,行150 :_check_command_response中的第155行:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ helpers.py“,提高OperationFailure(msg%errmsg,代码,响应)pymongo.errors.OperationFailure :不支持的投影选项:$ substr\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ helpers.py“,第155行,在_check_command_response中提高OperationFailure(msg%errmsg,代码,响应)pymongo.errors.OperationFailure:不支持的投影选项:$ substr\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ helpers.py“,第155行,在_check_command_response中提高OperationFailure(msg%errmsg,代码,响应)pymongo.errors.OperationFailure:不支持的投影选项:$ substr

为什么这样的基本操作会失败?我在Windows 10上运行并使用Python 3.6.7。我的PyMongo是3.7.2

D. *_* SM 0

$substr 运算符适用于所有当前支持的 MongoDB 版本 (2.6-4.4):

> db.foo.aggregate([{$project:{"name": {"$substr": ["$name", 2, -1]}}}])
{ "_id" : ObjectId("5fc032e56bc5b2e2216cdd08"), "name" : "llo" }
Run Code Online (Sandbox Code Playgroud)

您很可能正在使用古老的 MongoDB 安装,或者根据其中一条评论,使用像 CosmosDB 这样的仿数据库,其行为与 MongoDB 本身不同(官方 MongoDB 驱动程序也不支持)。