我正在使用 espData 集合,该集合包含以下类型的文档:
{
mac: String,
hash: String,
rssi: Number
}
使用猫鼬,我想选择具有相同mac和相同散列的那些行,如果count(*)等于2,则选择该行。然后,我想执行一个聚合,分别返回mac和rssi的平均值。
我编写了这段代码,但是没有用。
EspDataModel.aggregate([
{ $group: {
_id:{
mac:"$mac",
hash:"$hash",
},
count: {$sum:1}
}},
{$match: {count : 2}
}
], function(err,result){
result.map(function(doc){
EspDataModel.aggregate([
{
$match: { mac: doc._id.mac, hash:doc._id.hash }
},
{
$group:{
mac:"$_id.mac",
averageRSSI: {$avg: "$rssi"}
}
}], function(err,result){
console.log(result)
})
})
})
第一个聚合有效并有效地选择了我感兴趣的那些行,但是有没有合适的方法来匹配mac和原始集合的哈希并计算平均值? 谢谢您的帮助!