我正在开始收集汇总结果。 所以我关注了MO 'Pre aggegrated reports'
我正在使用此架构插入文档:
{
"_id" : "20160526/78220/59",
"metadata" : {
"date" : "2016-05-26",
"offer" : "78220",
"adv" : NumberLong(59),
"update" : ISODate("2016-05-26T10:49:25.597Z")
},
"daily" : NumberLong(6),
"hourly" : {
"12" : NumberLong(6)
},
"publisher" : {
"43" : {
"daily" : NumberLong(3),
"hourly" : {
"12" : NumberLong(3)
}
},
"738" : {
"daily" : NumberLong(3),
"hourly" : {
"12" : NumberLong(3)
}
}
}
我们的想法是从每个发布商的每个小时收集汇总信息。 _id是日期/优惠/代码,每个发布商都可以提供一些优惠。 但现在我需要获得所有发布商优惠的每日或每小时数据的总和。
我的主要问题是如何访问特定发布商的报告,例如738或43? 如果我查询:
db.getCollection('daily_aggregate').find({'publisher.738':{$exists:true}})
我获得了包含发布商738的所有文档,但我也获得了其他发布商数据。我想从738检索数据。 我在这里尝试不同的方法,但可能我必须以某种方式在发布者模式中包含pub_id。
有任何线索吗?
提前致谢。
答案 0 :(得分:0)
可能我需要查询的是:
db.getCollection('daily_aggregate').find({'publisher.738':{$exists: true}}, {_id: 0, 'publisher' : 1})
它给了我:
1
{
"publisher" : {
"738" : {
"daily" : NumberLong(4),
"hourly" : {
"18" : NumberLong(4)
}
}
}
}
2
{
"publisher" : {
"738" : {
"daily" : NumberLong(6),
"hourly" : {
"18" : NumberLong(6)
}
}
}
}
3
{
"publisher" : {
"43" : {
"daily" : NumberLong(9),
"hourly" : {
"12" : NumberLong(3),
"19" : NumberLong(6)
}
},
"738" : {
"daily" : NumberLong(3),
"hourly" : {
"12" : NumberLong(3)
}
}
}
}
4
{
"publisher" : {
"43" : {
"daily" : NumberLong(1),
"hourly" : {
"12" : NumberLong(1)
}
},
"738" : {
"daily" : NumberLong(2),
"hourly" : {
"12" : NumberLong(2)
}
}
}
}
但我想知道这是否是最好的情况。