python - MongoEngine 原始查询未解决

标签 python mongodb mongoengine

Mongo 引擎无法执行原始查询

AppDocument.objects(__raw__={
{"_id": ObjectId("1"),"car._id": ObjectId("2")}, 
            {"$pull": 
                {"car.$.toys": {"_id": ObjectId("3")}}
            }
}

错误是:

TypeError: unhashable type: 'dict'

最佳答案

.objects() 仅用于查询,不用于更新。因此,__raw__ 只能让您强制查询的filter 部分,而不是update 部分。

使用 mongoengine 需要执行此操作的方式:

find_qry = {"_id": ObjectId("1"),"car._id": ObjectId("2")}
update_qry = {"$pull": {"car.$.toys": {"_id": ObjectId("3")}}}
AppDocument.objects(__raw__=find_qry).update(__raw__=update_qry)

或者,请注意,您始终可以访问底层 pymongo 集合

coll = AppDocument._get_collection()
coll.update(find_qry, update_query)

关于python - MongoEngine 原始查询未解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57201418/

相关文章:

python - 使用networkx绘制图形时,如何在边缘上使用颜色?

python - 通过 Python 访问 Panatone Huey

python - Threading.Times 不起作用

java - 使用 spring mongo 模板在 MongoDB 聚合功能的 'project' 中添加额外的键值对

python - 将 mongoengine 查询集转换为 json 文件

python - pip3 install Flask-MongoEngine 安装失败

python - mongoengine ListField(ReferenceField()) 和自定义primary_key

python - 基于列表从数据框中提取值作为字典

mongodb - flask、mongokit、pymongo、flask-pymongo是什么关系?

Python、Django、Mongodb : ImportError: No module named bson. objectid