我有以下代码:
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
答案 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驱动程序也不支持)。