Mongo聚合查询提取最近7天的数据(node.js)

Chr*_*ris 0 mongoose mongodb node.js aggregation-framework

我有一大堆数据,我试图从Mongo(节点js)中提取数据以呈现一些图形.

我需要从几千个用户中提取最近7天的数据.每个用户的特定数据格式如下:

{
    "passedModules" : 
    [{
        "module" : ObjectId("53ea17dcac1d13a66fb6d14e"),
        "date" : ISODate("2014-09-17T00:00:00.000Z")
    }, 
    {
        "module" : ObjectId("53ec5c91af2792f1112554e8"),
        "date" : ISODate("2014-09-17T00:00:00.000Z")
    }, 
    {
        "module" : ObjectId("53ec5c5baf2792f1112554e6"),
        "date" : ISODate("2014-09-17T00:00:00.000Z")
    }]
}
Run Code Online (Sandbox Code Playgroud)

目前我有一组非常混乱的查询正在运行,但我相信这可以完全与Mongo一起完成吗?

基本上,我需要以动态的方式将所有条目从7天前提取到现在.

是否有一种尝试和测试方式以这种方式处理动态日期,更具体地说是使用mongo中的聚合框架?聚合框架的原因是我需要在之后对这些进行分组.

非常感谢

Joh*_*yHK 5

此类查询的一般模式是:

// Compute the time 7 days ago to use in filtering the data
var d = new Date();
d.setDate(d.getDate()-7);

db.users.aggregate([
    // Only include the docs that have at least one passedModules element
    // that passes the filter.
    {$match: {'passedModules.date': {$gt: d}}},
    // Duplicate the docs, one per passedModules element
    {$unwind: '$passedModules'},
    // Filter again to remove the non-matching elements
    {$match: {'passedModules.date': {$gt: d}}}
])
Run Code Online (Sandbox Code Playgroud)