【问题标题】:Updating entire collection in MongoDB在 MongoDB 中更新整个集合
【发布时间】:2019-09-21 03:06:47
【问题描述】:

我有一个 MongoDB 集合,其中包含各种文档。每隔几秒钟,我的 Python 脚本都会从 API 检索一些数据,我想用文档的更新版本更新集合的每个文档,因此必须更新整个集合。

result = db.main_tst.insert_one(dic)

这就是我插入数据的方式。现在我应该更新它,而不是插入dic。我如何在 MongoDB 中使用 Python 来做到这一点?我知道有 update_many() 方法,但我只找到了如何更新某个文档,而不是整个集合。

【问题讨论】:

  • 你在 dic 有什么?是整个文档还是一个字段?

标签: python mongodb


【解决方案1】:

应该很简单:

假设如果您在下面考虑,它会将字段名称 = 'N/A' 的所有匹配文档更新为“无名称”:

filterQuery = { 'name': 'N/A'}
updateQuery = { "$set": { "name": "No name" } }

result = mycol.update_many(filterQuery, updateQuery);

根据您的要求,您需要更新集合中的所有文档,您所要做的就是传递空的{} 代替过滤器,这意味着它应该更新所有文档:

filterQuery = {}
updateQuery = { "$set": { "name": "No name" } }

result = mycol.update_many(filterQuery, updateQuery)

【讨论】:

  • 谢谢!如果我已经有了要使用的字典,我应该只使用 "$set": dic 吗?
  • 嘿,只有一件事:如果我使用 update_many() 将更新集合的每个文档,但它们都将具有相同的值。我尝试改用 update_one(),但它没有更新任何记录
  • 是的,这就是我的困惑!你能告诉我你在 dic 中有什么吗?我的意思是样本数据,我正要问你同样的问题,以检查这是否是你的请求。Dic 是否有很少的文件包含这些文件的全部数据?您是否有该文档的任何唯一字段来搜索集合并更新或插入(如果集合中尚不存在)...
  • @Jack022 :是的,上面的答案将被更新或添加到集合中的所有文档中,那么您到底在寻找什么?假设您的集合中的每个文档都必须在这些字段中具有不同的数据,那么是否有一个唯一值来过滤某些文档/文档以使用新数据更新这些文档/文档,我当然会编写一个查询来满足该要求。
  • @Jack022 :好的,这应该很好,在这里提出一个带有示例数据、示例响应和 ping 链接的新问题,如果我能够提供帮助,我可以提供帮助。同时,如果你得到简单的一组需要在集合中更新的字典,您可以将 update_one 与过滤器一起使用(过滤器是唯一的字段值)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多