回到今天的文件我有一个集合,其中该集合中的所有文件都有一个日期戳,其中包括时间和日期。最有效的方法从集合
当使用聚合框架我怎么说给我的价值观在当下呢?以下只给我午夜的条目。
db.strategy.aggregate(
[
{
$match: {
"date": new Date()
}
},
]
);
回到今天的文件我有一个集合,其中该集合中的所有文件都有一个日期戳,其中包括时间和日期。最有效的方法从集合
当使用聚合框架我怎么说给我的价值观在当下呢?以下只给我午夜的条目。
db.strategy.aggregate(
[
{
$match: {
"date": new Date()
}
},
]
);
为了得到这对今天的日期时间值的文件,你需要创建在start
日期对象应在00:00:00.000
(毫秒精度)保持当前日期时间时间日期查询范围,并为今天的时间日期到23:59:59.999
到end
日期变量。
例如:
// 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 });
你应该得到的范围内,即价值从今天的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( [ {$ 匹配:{ “日期”:{$ GTE:的startDate,$ LTE:结束日期}} } ,
]
);
感谢您的回答我猜我被我的问题是检查,我不能日期的方法应用到值的数据库,然后得到一个简单的日期1 = date2的比较。 –
不用担心:)这将是这将不适用于相等比较因为您正在比较给定范围内的值。 – chridam
我想这是我的观点。我想平等检查thisDate =日期(),而不是thisDateTime today.setHours(0,0,0,0)和today.setHours(23,59,59,999)之间。要做到这一点,前者我需要能够截断存储的日期以消除时间。 –