python - 使用 Pymongo 更新_Many Mongo 文档
问题描述
我对 mongo 的数据列表有疑问。
我在 Mongo DB 中有一些项目,我需要用不同的数据更新其中一些项目。
例子,
现在在数据库中我有:
{
"data": [
{
"_id": ObjectId("60e422a7c37c8d5c7f92add9"),
"date": "2021-07-06 09:30:12.193452",
"from_cache": false,
"message_hash": "8ee640883e8bce3ebed1dba8a0c6c7e5",
"predict_result": "Spam",
"probability": "0.5316912313644865",
"processing_duration": 378.8
},
{
"_id": ObjectId("60e422b1c37c8d5c7f92addb"),
"date": "2021-07-06 09:30:24.465770",
"from_cache": false,
"message_hash": "b0384a99d40dfe6375d615689e02dfb2",
"predict_result": "Spam",
"probability": "0.7002104",
"processing_duration": 49.75
},
{
"_id": ObjectId("60e422b1c37c8d5c7f92addc"),
"date": "2021-07-06 09:30:17.535144",
"from_cache": false,
"message_hash": "6d7b2640368d0b98dc81a3cde41b7ed9",
"predict_result": "Spam",
"probability": "0.6056733",
"processing_duration": 35.61
},
{
"_id": ObjectId("60e422c5c37c8d5c7f92addf"),
"date": "2021-07-06 09:30:42.515050",
"from_cache": false,
"message_hash": "910be0727279462f6cca4d5b43093387",
"predict_result": "Spam",
"probability": "0.8142542043496809",
"processing_duration": 17.57
},
{
"_id": ObjectId("60e423b5c37c8d5c7f92adf8"),
"date": "2021-07-06 09:34:38.985356",
"from_cache": true,
"message_hash": "910be0727279462f6cca4d5b43093387",
"predict_result": "Spam",
"probability": "0.8142542043496809",
"processing_duration": 1.08
},
{
"_id": ObjectId("60e42f6ec37c8d5c7f92af25"),
"date": "2021-07-06 10:24:40.329178",
"from_cache": false,
"message_hash": "ad2f8a932272db08debaff29cb8feb69",
"predict_result": "Spam",
"probability": "0.7841739770961472",
"processing_duration": 14.71
},
{
"_id": ObjectId("60e42f78c37c8d5c7f92af27"),
"date": "2021-07-06 10:24:48.530278",
"from_cache": false,
"message_hash": "d8d6cbc88b02d4dc4adb465d76843c00",
"predict_result": "Spam",
"probability": "0.7841739770961472",
"processing_duration": 5.93
}
]
}
我从端点收到请求,需要用不同的数据更新其中的一些“predict_result”。
我尝试这样做:
def update_many(self, ids: list, data):
query = {
'_id': {
"$in": ids
}
}
newvalues = {
"$set":
{
data
}
}
self.collection.update_many(query, newvalues)
但它不起作用。
非常感谢您的帮助!
解决方案
假设“数据”是一个 python 字典,你应该使用这个:
def update_many(self, ids: list, data):
query = {"_id": {"$in": ids}}
newvalues = {"$set": data}
self.collection.update_many(query, newvalues)
这将更新“数据”中的字段。
推荐阅读
- vector - 在 Rust 中初始化向量的向量
- vhdl - 忽略 FPGA 中 FIFO 输入的数据的总体影响是什么?
- scala - Spark:使用 scala/java 在应用程序中进行调度
- angular - Angular 填充来自 2 个不同 Web 服务的 mat-optgroup/mat-options
- api - 从预请求脚本中的集合调用请求
- clojure - 为什么这段代码在 Clojure 中报告堆栈溢出
- shell - 如果使用 getopts 解析,shell 脚本标志可以有可选参数吗?
- r - heemod::如何在运行模型时为两种策略定义不同的初始计数
- r - 使用 lodowm 从 PNADc 下载年度数据
- html - Dynamic FontAwesome - 将 unicode 作为参数传递给 CSS 文件