我想要汇总3个集合,并根据某些条件对结果数据进行分组,这是我当前的代码:
d1 = self.db.client['command_config'].aggregate([
{
'$project': {
'module': 1,
'count_enabled': {
'$cond': {'if': {'$eq': ['$enabled', 1]}, 'then': 1, 'else': 0}
},
'count_disabled': {
'$cond': {'if': {'$eq': ['$enabled', 0]}, 'then': 1, 'else': 0}
}
}
}, {
'$group': {
'_id': '$module', 'count_enabled': {'$sum': '$count_enabled'},
'count_disabled': {'$sum': '$count_disabled'}
}
}])
d2 = self.db.client['event_config'].aggregate([
{
'$project': {
'module': 1,
'count_enabled': {
'$cond': {'if': {'$eq': ['$enabled', 1]}, 'then': 1, 'else': 0}
},
'count_disabled': {
'$cond': {'if': {'$eq': ['$enabled', 0]}, 'then': 1, 'else': 0}
}
}
}, {
'$group': {
'_id': '$module', 'count_enabled': {'$sum': '$count_enabled'},
'count_disabled': {'$sum': '$count_disabled'}
}
}
])
d3 = self.db.client['settings'].aggregate([
{
'$project': {
'module': 1,
'count_enabled': {
'$cond': {'if': {'$eq': ['$enabled', 1]}, 'then': 1, 'else': 0}
},
'count_disabled': {
'$cond': {'if': {'$eq': ['$enabled', 0]}, 'then': 1, 'else': 0}
}
}
}, {
'$group': {
'_id': '$module', 'count_enabled': {'$sum': '$count_enabled'},
'count_disabled': {'$sum': '$count_disabled'}
}
}
])
目前我对每个集合都有3个查询,但它们工作正常但是你可以看到它们的每个代码都重复相同的代码,有没有办法把它们放在一起?请记住,3个中的每一个可能具有相同的模块名称,应该将其组合成一个。