由于我对 MongoDB(以及一般的数据库)相当陌生,我想知道这是否是修改嵌套条目中一个字段的最 Pythonic 方式。我要更改的字段存储在我的集合“板”中,如下所示:
_id: 270
checklist: {
mechanical: {
15: False
}
}
所有键(清单、机械键和 15)都是字符串,并引用布尔值 (False)。我如何修改数据的代码如下:
# lock collection, define query
col = db["boards"]
query = {"_id": board_id}
# get data of one ID
document = col.find_one(query)
if document is None:
print("Board id {0} invalid!".format(board_id))
return
# modify document
document["checklist"][checklist][str(checklist_nr)] = set_to
# update whole document
col.update_one(query, {"$set": document})
正如你所看到的,我总是得到完整的文档,修改它并再次编写完整的修改文档。有没有办法只查询这个字段并修改它?我无法做到这一点,出现这样的错误,等等:
bson.errors.InvalidDocument: cannot encode object: {'15'}, of type: <class 'set'>