首页 > 解决方案 > 在 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}

标签: mongodbpymongo

解决方案


将 collection2 提取到dict变量中并用于$set更新 collection1,例如

for doc in db.collection2.find({}, {'_id': 0}):
    db.collection1.update_one({'path': doc.get('path')}, {'$set': doc})

推荐阅读