如何将两个聚集查询合并成一个

问题描述:

如何合并这两个查询到一个:如何将两个聚集查询合并成一个

查询1

db.Response.aggregate([ 
    { 
     "$and": [ 
      { "job_details.owner_id" : 428 }, 
      { "job_details.owner_type" : 'searches' } 
     ] 
    }, 
    { 
     "$group": { 
      "_id": "$candidate_city_name_string", 
      "count": { "$sum": 1 } 
     } 
    } 
]) 

查询2

db.Response.aggregate([ 
    { 
     "$and": [ 
      { "job_details.owner_id" : 428 }, 
      { "job_details.owner_type" : 'searches' } 
     ] 
    }, 
    { 
     "$group": { 
      "_id": "$skill", 
      "count": { "$sum": 1 } 
     } 
    } 
]) 

的结果像这样的查询 输出1:

{ 
    "result": [ 
     { _id: 'Bangalore', count: 8 }, 
     { _id: 'cochi', count: 9 } 
    ] 
    "ok":1 
} 

输出2:

{ 
    "result": [ 
     { _id: 'java', count: 7 }, 
     { _id: 'python', count: 10 } 
    ], 
    "ok":1 
} 

我怎样才能得到这些结果2在一个查询?

我需要一个像这样的输出:

预期输出:

{ 
    "result": [ 
     "candidate_city_name_string": [ 
      { _id: 'Bangalore', count: 8 }, 
      { _id: 'cochi', count: 9 } 
     ], 
     "skill": [ 
      { _id: 'java', count: 7 }, 
      { _id: 'python', count: 10 } 
     ] 
    ], 
    "ok":1 
} 

这可能吗?在某处我看到了一些关于$facet的东西,但我不明白这一点。

db.Response.aggregate([ 
{"$match":{"$and":[{"job_details.owner_id" : 482},{"job_details.owner_type" : 'searches'}]}}, 
{$facet: { 
    "candidate_sublocation_name_string": [ 
         {"$group": {"_id":"$candidate_sublocation_name_string","count": {"$sum": 1 }}} 
         ], 
    "skill": [ 
         {"$group": {"_id":"$skill","count": {"$sum": 1 }}} 
         ] 
     }}])