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

时间:2019-04-03 14:31:30

标签: mongodb pymongo

我有以下代码:

client = MongoClient(uri)
db = client['my_db']
print(db.collection_names())
#print(db.list_collection_names())

我收到错误消息

  

文件“ C:\ Users \ gwerner004 \ eclipse-workspace \ MongoTestRasa \ FirstTest.py”,连接中的第17行       打印(db.collection_names())     文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ database.py”,行715,在collection_names中       nameOnly = True,** kws)]     list_collections中的文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ database.py”,行677       ** kwargs)     _list_collections中的文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ database.py”,第651行       游标= self._command(sock_info,cmd,slave_okay)[“游标”]     _command中的文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ database.py”,行514       client = self .__ client)     在命令中输入文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ pool.py”,行579       unacknowledged =未确认)     在命令中,在第150行中输入文件“ C:\ Users \ gwerner004 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ pymongo \ network.py”       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

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

1 个答案:

答案 0 :(得分:0)

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

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

您很可能使用的是古老的MongoDB安装,或者根据评论之一,使用模仿数据库(例如CosmosDB),其行为不像MongoDB本身(官方MongoDB驱动程序也不支持)。