Python Mongo批量匹配和更新多个查询
我有两个集合,一个c1带有像Python Mongo批量匹配和更新多个查询,python,mongodb,mongodb-query,aggregation-framework,pymongo,Python,Mongodb,Mongodb Query,Aggregation Framework,Pymongo,我有两个集合,一个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',
{'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_':'black'}
我需要选择c1的子集(使用find或match),其中满足某些条件。例如,查找c1中'State'=='NY'
和'Race\u standarized'
不存在的所有文档
如何执行此批量查找/匹配,然后更新多个操作?我正在使用PyMongo。更新:解析如下:
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)