Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在MongoDB中更新整个集合_Python_Mongodb - Fatal编程技术网

Python 在MongoDB中更新整个集合

Python 在MongoDB中更新整个集合,python,mongodb,Python,Mongodb,我有一个MongoDB集合,里面有各种文档。每过一秒,我的Python脚本就会从API检索一些数据,我想用文档的更新版本更新集合的每个文档,因此必须更新整个集合 result = db.main_tst.insert_one(dic) 这就是我插入数据的方式。现在,我应该更新它,而不是插入dic。在MongoDB中如何使用Python?我知道有update\u many()方法,但我只找到了如何更新某个文档,而不是整个集合。应该很简单: 让我们假设如果你在下面考虑,它将更新所有匹配文档,其中字

我有一个MongoDB集合,里面有各种文档。每过一秒,我的Python脚本就会从API检索一些数据,我想用文档的更新版本更新集合的每个文档,因此必须更新整个集合

result = db.main_tst.insert_one(dic)
这就是我插入数据的方式。现在,我应该更新它,而不是插入
dic
。在MongoDB中如何使用Python?我知道有
update\u many()
方法,但我只找到了如何更新某个文档,而不是整个集合。

应该很简单:

让我们假设如果你在下面考虑,它将更新所有匹配文档,其中字段名称=“n/a”到“没有名字”:

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

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

result = mycol.update_many(filterQuery, updateQuery)
应该很简单:

让我们假设如果你在下面考虑,它将更新所有匹配文档,其中字段名称=“n/a”到“没有名字”:

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

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

result = mycol.update_many(filterQuery, updateQuery)

你在dic里有什么?那是整个文档还是一个字段?你在dic里有什么?那是整个文档还是一个字段?谢谢!如果我已经有一本字典要用,我应该只做“$set”:dic吗?嘿,只有一件事:如果我使用update_many(),集合中的每个文档都会被更新,但它们都具有相同的值。我尝试改用update_one(),但它不更新任何记录是的,这就是我所困惑的!!你能告诉我你在dic里有什么吗?我的意思是样本数据,我正要问你同样的问题,以检查这是否是你的要求。Dic是否有少数文件包含这些文件的全部数据?您是否有任何文档的唯一字段可用于在集合中搜索、更新或插入(如果集合中还没有该文档)…@Jack022:是,如果上面的答案是相同的,则该文档将被更新或添加到集合中的所有文档中,那么您到底在寻找什么?假设集合中的每个文档在这些字段中必须有不同的数据,那么是否有一个唯一的值来过滤某些文档/文档以使用新数据更新这些文档/文档,我当然会编写一个查询来满足该要求。@Jack022:好的,应该很好,在这里用示例数据、示例响应和ping链接提出一个新问题,如果我能够。。同时,为了简单起见,如果您得到一组需要在集合中更新的词典,您可以使用带有过滤器的更新词典(过滤器是唯一的字段值),谢谢!如果我已经有一本字典要用,我应该只做“$set”:dic吗?嘿,只有一件事:如果我使用update_many(),集合中的每个文档都会被更新,但它们都具有相同的值。我尝试改用update_one(),但它不更新任何记录是的,这就是我所困惑的!!你能告诉我你在dic里有什么吗?我的意思是样本数据,我正要问你同样的问题,以检查这是否是你的要求。Dic是否有少数文件包含这些文件的全部数据?您是否有任何文档的唯一字段可用于在集合中搜索、更新或插入(如果集合中还没有该文档)…@Jack022:是,如果上面的答案是相同的,则该文档将被更新或添加到集合中的所有文档中,那么您到底在寻找什么?假设集合中的每个文档在这些字段中必须有不同的数据,那么是否有一个唯一的值来过滤某些文档/文档以使用新数据更新这些文档/文档,我当然会编写一个查询来满足该要求。@Jack022:好的,应该很好,在这里用示例数据、示例响应和ping链接提出一个新问题,如果我能够。。同时,为了简单起见,如果您得到一组需要在集合中为各个文档更新的词典,您可以使用带有筛选器的update_one(筛选器是唯一的字段值)