node.js - $dateToString 和 $subString 没有显示正确的日期

标签 node.js mongodb mongoose aggregation-framework

db.checkins.aggregate
 ([{'$match':{"checkinData.time":
                    {"$gt":ISODate("2017-08-31T18:30:00.000Z"),
                    "$lte":ISODate("2017-08-31T20:00:00.000Z")}}},

  {"$project":{'dte': {"$dateToString": 
                             {format: "%Y-%m-%d", date:"$checkinData.time"}
                      }
              }}

])

数据库返回的数据非常好这意味着下一个日期(2017/09/01)的所有数据返回。 但问题是 字段 'dte' 的值显示的是之前的日期 (2017-08-31)

but I have to show value of 'dte' is next date (2017-09-01).

我用过$dateToString$subString

{"$project":{"dte":{"$substr":["$checkinData.time",0,10]},

它也同样返回 2017-08-31

Is there any method or query in mongoDB to show next date for this.

最佳答案

你可以使用这个脚本。

  {"$project":{ 'dte': { "$dateToString": { format: "%Y-%m-%d", 
                        date:{ $add: [ "$checkinData.time", 
                                { $subtract: [ new Date( "1970-01-01T00:00:00.000Z" ), new Date( "1970-01-01T00:00:00.000" ) ] } // Time Offset 
                                ] } } } } }

我刚刚给你的约会添加了时区差异。我这样计算时间偏移量。

$subtract: [ new Date( "1970-01-01T00:00:00.000Z" ), new Date( "1970-01-01T00:00:00.000" ) ]

关于node.js - $dateToString 和 $subString 没有显示正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46546504/

相关文章:

python - 在 pymongo 中正确使用 $ne 或 $not(不支持的投影选项)

javascript - 将 JSON 查询条件转换为 MongoDB/Mongoose 操作

javascript - 无法将默认值添加到数组中的对象

node.js - 如何处理express nodejs中的body-parser错误

node.js - 我正在使用 Mongoose ,并希望所有成员都单独使用每项研究的结果

mongodb - Mongodb 中的标签感知分片

node.js - 当我尝试使用工作 URL 连接到同一个数据库时,Mongoose 永远不会返回它的 promise

javascript - Node.JS 仅适用于本地主机?

javascript - 缓存 API 响应

node.js - 如何根据数组中的数据过滤我的集合?