将两个mongo结果合并为一个输出?

时间:2020-04-21 02:12:31

标签: mongodb

我正在使用mongoDB,但是我是一个完整的初学者。我有两个不同的查询,希望将它们组合成一个输出(我希望答案是一个查询)

查询1:

{ "_id" : "NonOfficerInvolved", "nInjured" : 0.5048153043227224, "nKilled" : 0.24339953718948618 } 

哪个返回

db.fin.aggregate([ 
{ $match: { "misc.incident_characteristics": "Officer Involved Incident" } },
{ $group: {
       _id: "OfficerInvolved",
       nInjured: { $avg: "$casualties.n_injured" },
       nKilled: { $avg: "$casualties.n_killed" }
    }
}
])

查询2:

{ "_id" : "OfficerInvolved", "nInjured" : 0.3599233845980508, "nKilled" : 0.358965692073686 }

返回哪个

{ "_id" : "NonOfficerInvolved", "nInjured" : 0.5048153043227224, "nKilled" : 0.24339953718948618 } 
{ "_id" : "OfficerInvolved", "nInjured" : 0.3599233845980508, "nKilled" : 0.358965692073686 }

我想将两者的结果都放在一张表中,如下所示。可以在一个查询中做到这一点吗?

pow

1 个答案:

答案 0 :(得分:0)

是的,您绝对可以在一个查询中做到这一点。

不仅将匹配结果与魔术字符串匹配,还将匹配结果存储为布尔值或字符串形式的新字段,然后在该新字段上进行分组。

db.fin.aggregate([ 
{ "$addFields": { type:{
                $cond:[
                   {$eq:["$misc.incident_characteristics","Officer Involved Incident"]},
                   "OfficerInvolved",
                   "NonOfficerInvolved"
                ]
}}},
{ $group: {
       _id: "$type",
       nInjured: { $avg: "$casualties.n_injured" },
       nKilled: { $avg: "$casualties.n_killed" }
    }
}
])

要使用正则表达式进行匹配,请替换行

{$eq:["$misc.incident_characteristics","Officer Involved Incident"]},

使用

{$regexMatch:{
              input:"$misc.incident_characteristics", 
              regex:"Officer Involved Incident" 
              options:"i"
}},