【问题标题】:Mongo bulk match and update many queryMongo 批量匹配和更新许多查询
【发布时间】:2021-08-03 06:10:33
【问题描述】:

我有两个集合,一个 c1 包含 {'State': 'NY', 'Race': 'blk'} 等字段,另一个 c2 包含映射文档,例如 {'raw': 'blk', 'mapped_race': 'black'}。 c2 中有很多文档可能映射到同一个'mapped_race'(例如'blk' --> 'black''african-american' --> 'black' 等)。

我正在使用 c2 映射 c1,例如,{'State': 'NY', 'Race': 'blk'} --> {'State': 'NY', 'Race': 'blk', 'Race_Standardized': 'black'}

我需要选择满足某些条件的 c1 子集(使用查找或匹配)。例如,查找 c1 中 'State'=='NY''Race_Standardized' 不(尚)存在的所有文档。

如何进行批量查找/匹配,然后更新许多操作?我正在使用 PyMongo。

【问题讨论】:

    标签: python mongodb mongodb-query aggregation-framework pymongo


    【解决方案1】:

    更新:解决如下:

    query = {
        'State': 'NY',
        'Race': {"$exists": True}, 
        'Race_Standardized': {"$exists": False}
    }
    
    updates = []
    
    for doc in c2.find({'field':'Race'}):
        q = query.copy()
        q.update({'Race': doc.get('raw')})
        updates.append(UpdateMany(q, {'$set': {f'Race_Standardized': doc.get(f'mapped_race')}}))
    
    result = c1.bulk_write(updates)
    

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多