我想弄清楚在mongo/python中执行以下操作的优雅方法:我有两个集合:一个包含人员和属性列表,一个包含子集那些是“人口子集”的人。我想运行地图缩减作业来计算大型列表中的某些汇总统计信息,但仅使用出现在人口样本中的人员的姓名。下面是一组记录的例子:筛选器映射减少到匹配不同集合的记录
master_list: [{ Name: Jim }, { Age: 24}
{ Name: Bill}, { Age: 38}
{ Name: Mary}, { Age: 55}]
subset : [{ Name: Jim}
{ Name: Mary}]
的想法是计算的年龄,但只使用两个的三个记录在master_list平均,作为集上市。我意识到,mongo中的map_reduce支持查询参数,但不清楚处理上述问题的最佳方式是否给予了不加入。一种选择是我预处理master_list并创建一个属性'include'来标记要使用的记录,然后在map_reduce过滤器中对其进行操作。似乎kludgy虽然并在我的数据库中创建一个永久性的标志是由于各种原因恼人。
UPDATE
阅读建议在查询中嵌入列表后,我能得到什么,我需要用下面
map_reduce(mapper, reducer, out = {'merge': 'Stats'},
finalize = finalizer, scope = {'atts': f},
query = {'Name' : { '$in' : pop }})
哪里流行为名称的Python列表。谢谢!
子集合有多大? –
子集很小,大概有1500-2000个名字 –