我有一个具有以下结构的文档,我想获得过去 2 个月的总数,加上 2013.5 和 2013.4,作为获取前 10 个包的过程的一部分。
如果我使用聚合
db.hits.aggregate(
{$project:{"total":{"$add":["$value.2013.5", "$value.2013.4"]}}})
仅当两个字段都存在于文档中时,这才会返回一个数值。如果缺少任何字段,则 total 的值为 null。任何想法我可以如何解决这个问题。在 $project 之后有 $group、$sort、$limit,但为了清楚起见,我省略了它们。
{
"_id" : "4e6eef33-d88a-4d4d-a6b2-6becf1be7e8f",
"value" : {
"package" : 4498
"2012" : {
"1" : 1.0,
"2" : 1.0,
"4" : 1.0,
"6" : 4.0,
"7" : 2.0,
"8" : 5.0,
"12" : 1.0,
"hits" : 15.0
},
"2013" : {
"1" : 6.0,
"4" : 2.0,
"hits" : 8.0
},
"hits" : 23.0
}
}
顺便说一句,我只用了两个月来说明。我通常会使用12个月。
编辑:我的后备是编写一个在文档中添加缺失字段的函数。如果有办法避免这样做,我很感兴趣。