如何在MongoDB中每周查询数据?

时间:2012-08-09 00:53:37

标签: mongodb database nosql

我的实际文件比这更复杂但是如此简化它们将解释我想要解决的问题。我有每日和每周的文件。

每日文件:ObjectId, Type, Count, Date

每周文件:ObjectId, Type, Count, StartDate, EndDate

如果我想要每日报告,我可以运行一个查询,选择日期字段值介于范围X到Y和类型等于'每日'的文档。我可以为Weekly报告做同样的事情,一切正常。

问题:

对于每周报告,如果开始日期不是一周的第一天,结束日期不完全是一周的最后一天,选择“每周”类型的文档将产生不准确的报告,因为每周文档存储数据整个星期。这可能看起来很奇怪,但谷歌分析可以让你这样做:

enter image description here

在上面的截图中,7月3日不是那周的开始,也不是7月17日那周的结束。但Google Analytics可让您根据需要查看数据。

可能的解决方案:

一种可能的解决方案是生成溢出天数的每日报告,并从每周报告中减去。

问题:

有没有更好的解决方案来解决我描述的问题?我愿意重新设计文件

1 个答案:

答案 0 :(得分:0)

  

对于每周报告,如果开始日期不是一周的第一天   并且结束日期不完全是一周的最后一天,选择   类型'每周'从那以后会产生不准确的报道   每周文档存储整周的数据。这可能看起来像   很奇怪,但谷歌分析可以让你这样做:

因为他们不会存储类似的文件。

这种方式的工作原理(我估计)是谷歌只是将每日文件设置为夏天,而忽略了你的周"范围并适用他们自己的范围:

  

尽可能多的整周,并汇总每日文件   来到那个范围

然后:

  

将其他人扔到顶端,使每个结束和开始点

我不会尝试在这里混合一周和每日文档,我只会查询每日文档并聚合客户端。