Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Mongo批量匹配和更新多个查询_Python_Mongodb_Mongodb Query_Aggregation Framework_Pymongo - Fatal编程技术网

Python Mongo批量匹配和更新多个查询

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',

我有两个集合,一个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_':'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)