从集合中返回今天文档的最有效方法

时间:2016-10-11 10:26:15

标签: mongodb datetime mongodb-query aggregation-framework mongodb-aggregation

我有一个集合,其中该集合中的所有文档都有一个日期时间戳,其中包括时间和日期。

使用聚合框架时,我怎么说给我今天的价值?以下只给我午夜的条目。

db.strategy.aggregate(
    [
        {
            $match: {
             "date": new Date()
            }
        },

    ]
);

2 个答案:

答案 0 :(得分:1)

要获取具有今天日期时间值的文档,您需要创建一个日期查询范围,其中start日期对象应保持当前日期时间小时为00:00:00.000(毫秒精度)并设置今天的小时数为23:59:59.999end日期变量的日期。

例如:

// Create the start date which holds the beginning of today
var todayStart = new Date();
todayStart.setHours(0,0,0,0);

// Create the end date which holds the end of today
var todayEnd = new Date();
todayEnd.setHours(23,59,59,999);

// Create the date range query object
var query = {
    "date": {
        $gte: todayStart,
        $lte: todayEnd
    }
};

// using the find() method
db.strategy.find(query); 

或使用aggregate()方法

db.strategy.aggregate({ "$match": query });

答案 1 :(得分:0)

你应该得到I.e范围内的值。从今天的12AM时间戳到今天的23:59:59时间戳。

Var d = new Date();      var startDate = d.setHours(0,0,0);       var endDate = d.setHours(23,59,59);     db.strategy.aggregate(       [           {                $ match:{                        “date”:{$ gte:startDate,$ lte:endDate}                 }             },

   ]
);