我使用的是node.js mongodb客户端。我在一个集合中有一个时间戳值,现在我想使用aggregate将时间戳转换为IOSDate,这样我就可以很容易地比较它。但是我不知道该怎么做。
var db = game.getDB();
var coll = db.collection("LoginRecord");
coll.aggregate([
{
$project: {
"PT" : 1,
"PID" : 1,
"regDate" : new Date("$createTime"), //#####createTime is a timestamp, I want to convert it to IOSDate
"loginDay" : { $dayOfYear : "$_serverDate"}
}
},
{
$group : {
"_id" : "$loginDay",
"logUsers" : { $addToSet: "$PID"}
}
},
{
$unwind : "$logUsers"
},
{
"$group" : {
"_id" : "$_id",
"logCount" : { $sum: 1}
}
}
], function(err, res) {
logger.info("aggregate res " + JSON.stringify(res));
});
发布于 2018-07-28 05:28:31
发布于 2018-02-01 02:12:12
作为参考的convert milliseconds to date in mongodb aggregation pipeline for group by?
将毫秒(timestamp)转换为date对象的方法如下:
"regDate": {
$add: [ new Date(0), "$createTime" ]
}
发布于 2015-01-27 15:22:58
在使用聚合框架之前,只需查询集合并将文档更新为ISODate日期格式。仅供内部使用的Mongodb时间戳对象。因此,您应该永久地将类型切换为ISODate。链接到warning.
https://stackoverflow.com/questions/28164623
复制相似问题