无法更新 mongoDB 文档
Posted
技术标签:
【中文标题】无法更新 mongoDB 文档【英文标题】:Cant get mongoDB document to update 【发布时间】:2020-09-26 16:16:56 【问题描述】:Pymongo,Python3。真是绞尽脑汁。试过update_one()
和find_one()
和update()
。尝试使用 mongo id "_id"
以及我在每个文档中设置的已知 ID。文档中没有任何更新。谁能告诉我我哪里出错了?
最后一次尝试见下文。想要遍历所有集合和每个集合中的所有文档并更新特定字段。
使用update_one()
和ID
我知道文档中存在:
for collection in collectionNames:
for doc in movie_db[str(collection)].find():
new_path = get_updated_poster()
new_path_url = base_url + new_path
result = movie_db.collection.update_one('id':int(ID),'$set':'poster_path':new_path_url)
使用 find_one_and_update(),甚至尝试复制“_id”也无济于事(注意我这里还添加了“from bson.objectid import ObjectId”:
for collection in collectionNames:
for doc in movie_db[str(collection)].find():
new_path = get_updated_poster()
new_path_url = base_url + new_path
result = movie_db.collection.update_one(
"_id":ObjectId(id),
"$set":
"poster_path": new_path
, upsert=False)
【问题讨论】:
删除条件中的类型转换,然后如果您仍然有困难,请发布您正在使用的文档和条件。 【参考方案1】:movie_db.collection.update_one
通常表示更新集合中名为“collection”的一个文档。
您似乎使用collection
来保存您的收藏的名称,因此您可能需要使用movie_db[str(collection)].update_one
【讨论】:
太棒了!谢谢。你能解释一下为什么这有效吗?我确实在变量“集合”中保存了集合的名称。是因为我使用了我需要使用 db[variableName] 版本而不是 db.variableName 的变量吗? 没错,db.collection
有点像db.getCollection("collection")
或db["collection"]
的语法简写,所以它不支持使用变量集合名称。以上是关于无法更新 mongoDB 文档的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 mongoose 更新 Mlab 文档的值,它被保存为“__v”:0