mongodb - 在 pymongo 中的第一个集合中聚合两个集合并更新文档
问题描述
我正在使用 pymongo。我有一个集合,我想根据另一个集合中的值更新字段。这是来自集合 1 的文档。
{ _id: ObjectId("5fef7a23d0bdc785d4fc94e7"),
path: 'path1.png',
type: 'negative',
xmin: NaN,
ymin: NaN,
xmax: NaN,
ymax: NaN}
并且来自collection2:
{ _id: ObjectId("5fef7a24d0bdc785d4fc94e8"),
path: 'path1.png',
xmin: 200,
ymin: 200,
xmax: 300,
ymax: 300}
如何更新集合 1 以使示例文档如下所示:
{ _id: ObjectId("5fef7a23d0bdc785d4fc94e7"),
path: 'path1.png',
type: 'negative,
xmin: 200,
ymin: 200,
xmax: 300,
ymax: 300}
解决方案
将 collection2 提取到dict
变量中并用于$set
更新 collection1,例如
for doc in db.collection2.find({}, {'_id': 0}):
db.collection1.update_one({'path': doc.get('path')}, {'$set': doc})
推荐阅读
- android - 有没有办法使用 newsapi 在 android studio 中显示完整的新闻文章?
- javascript - 如何重新格式化 d3 中具有键值和键值的另一个值的数据?
- python - 动态定义一个虚拟装饰器
- javascript - 我的网站中有混合内容,但我找不到
- php - 错误:SQLSTATE [42S22]:找不到列:1054 'where 子句'中的未知列'0'
- html - 如何更改使用 HTML 创建的按钮的样式
- python - 如何在简单的 mitmproxy 脚本中发出请求?
- date - 从空单元格返回 False 的函数
- php - Ajax to PHP with json using arrays make ignores "echo"
- base64 - Gatsby 在 html 中用 base64 字符串替换图像,但仍然在 javascript 中提供它