我在pymongo中有一个相当复杂的查询,如下所示:
frames = collection.find(
{
"inspectionId": inspectionId,
"timestamp":
{
"$lt": time.time() - 3600
}
}
).limit(100).sort('img', 1)
现在,我想更新光标timestamp
指向的所有文档中的frames
字段。现在,我要遍历光标并为每个文档设置时间戳:
for frame in frames:
collection.update_one(
{
"_id" : frame["_id"]
},
{
"$set" :
{
"timestamp": time.time()
}
}
)
但是,这似乎不太有效,因为它需要花费一些时间。是否有方便的方式一次更新存储在pymongo光标中的所有文档?
修改:
它不是重复的,因为我正在使用.limit()
和.sort()
,它们与更新选项{multi: true}
不兼容。
答案 0 :(得分:0)
正如您所说,它们位于pymongo游标中(或数据位于应用程序末尾)。遍历它们,更新框架并进行批量保存调用。
还有一件事我没有得到您的用例。为什么要更新,您选择限制和排序。如果不需要这些,则可以直接使用multi = true
进行更新。