pythonpymong:密钥上的文档无效<bson.ObjectId>

2024-05-04 09:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试在字符串中构建一个查询,然后使用evalast_eval)将其转换为dict,以便传递给pymongo更新。在

for item in default_properties:
    query = '{"_id": {ObjectId:"%s"}}' % (oid)
if (doc["diff_id"] == diff_id):
                default_val_pos = [line[0], line[1],line[2],line[3],line[4],line[5],line[6],line[7],line[8]]
                update_val = '{ "$set":{"properties.%s": default_val_pos[%d] } }' % (item,idx)
                db.routes.update(eval(query), eval(update_val))

我认为现在应该可以了,因为在mongoshell中它本身也接受相同的查询,唯一的区别是我使用了from bson.objectid import ObjectId来格式化它,但是发生了这个错误:

^{pr2}$

我想我不应该把一个字符串作为一个字符串来解释,我不应该把它作为一个字符串来解释吗?在

谢谢!在


Tags: 字符串posiddefaultevallinediffupdate
1条回答
网友
1楼 · 发布于 2024-05-04 09:49:57

应该是:

query = '{"_id": ObjectId("%s")}' % (oid)

您会对MongoDB Extended JSON感到困惑,可以对其进行如下评估:

^{pr2}$

但构建查询的最简单方法是使用Python文本:

query_dict = {"_id": ObjectId(oid)}

相关问题 更多 >