我有一个mongodb集合,其中每个文档都有一些属性和一个utc时间戳.我需要从集合中提取数据并使用聚合框架,因为我使用集合中的数据在用户界面上显示一些图表.但是,我需要根据用户的时区进行聚合.假设我知道用户的时区(通过浏览器或其他方式传递请求),有没有办法使用聚合框架根据[客户端]时区进行聚合?
有没有办法在运行 mongo 查询时考虑时区?我们有一个问题,因为时钟已经前进(到 BST),我们的 mongo 聚合查询没有按预期对记录进行分组。
例如,假设我有3条具有createdDate的2017-03-27 13:00:00,2017-03-28 00:30:00和2017-03-28 13:00:00我期望的聚集,1组记录27/3和2记录28/3。但是,因为第二条记录以 UTC2017-03-27 23:30:00格式存储在数据库中,作为聚合组 27/3 的 2 条记录和 28/3 的仅 1 条记录。
这是聚合查询:
{ "$match" : { "$and" : [
{ "createdDate" : { "$gte" : { "$date" : {ISODATE}} ,
"$lte" : { "$date" : {ISODATE}}}
]}},
{ "$group" : { "_id" : { "_id" : "$id" ,
"createdDate" : {
"year" : { "$year" : "$createdDate"} ,
"month" : { …Run Code Online (Sandbox Code Playgroud) 我是mongodb的新手.以下是我的查询.
Model.aggregate()
.match({ 'activationId': activationId, "t": { "$gte": new Date(fromTime), "$lt": new Date(toTime) } })
.group({ '_id': { 'date': { $dateToString: { format: "%Y-%m-%d %H", date: "$datefield" } } }, uniqueCount: { $addToSet: "$mac" } })
.project({ "date": 1, "month": 1, "hour": 1, uniqueMacCount: { $size: "$uniqueCount" } })
.exec()
.then(function (docs) {
return docs;
});
Run Code Online (Sandbox Code Playgroud)
问题是在iso时区的mongodb存储日期.我需要这些数据来显示面积图.
我想按日期与当地时区分组.是否有任何方法可以在分组时将时间偏移添加到日期?
我在mongodb中以UTC时间格式插入了数据。我希望根据时区转换时间。有可能在mongo查询中这样做吗?