Database design MongoDB查询具有时间框架的页面视图

Database design MongoDB查询具有时间框架的页面视图,database-design,mongodb,node.js,Database Design,Mongodb,Node.js,我使用mongodb存储图像元数据和S3URL。我想 在一个时间段内显示查看最多的项目,如“今天”、“本周”, 就像youtube处理视频一样。我应该如何在上存储“视图” mongodb可以查询这种数据吗 我正在考虑创建一个视图集合,并将每个“视图”存储为 包含日期信息的文档,并将视图计数存储在 用于快速检索视图计数的单个图像文档。这些 每个页面视图将更新两个页面。我假设MapReduce会 工作在那里完成,但我不能完全描绘它。不要为每个视图创建单独的文档,除非您需要它 您可以切掉日期中不重要的

我使用mongodb存储图像元数据和S3URL。我想 在一个时间段内显示查看最多的项目,如“今天”、“本周”, 就像youtube处理视频一样。我应该如何在上存储“视图” mongodb可以查询这种数据吗

我正在考虑创建一个视图集合,并将每个“视图”存储为 包含日期信息的文档,并将视图计数存储在 用于快速检索视图计数的单个图像文档。这些 每个页面视图将更新两个页面。我假设MapReduce会
工作在那里完成,但我不能完全描绘它。

不要为每个视图创建单独的文档,除非您需要它

您可以切掉日期中不重要的部分,只存储天+小时或只存储天,然后使用
$inc
添加新的“视图”:

db.hits.update(
    {"item": "image0001", "date": ..dayordayandhour..},
    {"$inc": { "hits": 1}},
    true) //upsert
对于可以使用
group
的聚合,mapreduce是一种过度使用


注意:如果您不需要确切的数字,您可以每小时进行汇总,然后更新每个文档上的“当天”/“本周”计数器(您可以使用此方法管理多个计数器!),以便您可以根据视图计数器进行快速查找和排序。

不要为每个视图创建单独的文档,除非你需要它

您可以切掉日期中不重要的部分,只存储天+小时或只存储天,然后使用
$inc
添加新的“视图”:

db.hits.update(
    {"item": "image0001", "date": ..dayordayandhour..},
    {"$inc": { "hits": 1}},
    true) //upsert
对于可以使用
group
的聚合,mapreduce是一种过度使用


注意:如果你不需要确切的数字,你可以每小时汇总一次,然后更新每个文档上的“当天”/“本周”计数器(你可以使用这种方法管理多个计数器!),这样你就可以根据查看计数器进行快速查找和排序。

我告诉过你这不起作用,请继续那里的讨论。我告诉过你这不起作用,请继续那里的讨论。