【问题标题】:Can't get the documents by date Mongoose无法按日期获取文件 Mongoose
【发布时间】:2017-05-16 07:30:06
【问题描述】:

我保存了createdAt : new Date()的文件

这些被保存为例如“createdAt”:ISODate(“2017-01-02T06:46:15.619Z”),

现在,当我使用下面的查询获取单个日期的结果时,它不会找到。

User.find({
    "userStatus":"active",
    "entityType": {$ne: ""},
    "createdAt": {
        $gte: new Date(2017, 0, 2),//from date
        $lt: new Date(2017, 0, 2)//to date
    }},function(err,data){
        if(err){ ...

在我的用户模型中是这样的:

createdAt:Date

我可以找到更广泛的日期,但不能找到一个日期。 我也试过$lte 而不是$lt。 SO上的所有解决方案都说同样的话。我哪里错了?

【问题讨论】:

  • 对 UTC 时间使用具有相同参数的 new Date(Date.UTC(...))。您拥有的变体具有本地时区的日期。
  • 好的。保存时还是获取时?如果在保存时,那么我应该如何在那里指定UTC? new Date(Date.UTC()) 会单独工作并保存在 UTC 时间戳中吗?
  • 将我的搜索查询修改为"createdAt": { $gte: new Date(Date.UTC(2017, 0, 2)),//from date $lt: new Date(Date.UTC(2017, 0, 2))//to date } 但没有帮助
  • $gte$lt 中的日期条件相同。这相当于ISODate("2017-01-02T00:00:00.000Z")。您尝试获取的记录有ISODate("2017-01-02T06:46:15.619Z")。试着调整你的日期。如果您需要单日期比较,则必须将时间部分添加到查询中
  • 是的,但实际上我只能知道获取日期而不是时间。如果我的日期过滤器只有一个日期或相同的 from_date 和 to_date,解决方法是什么?

标签: node.js mongodb mongoose


【解决方案1】:
db.User.find({ 
    createdAt:{
        $gte: ISODate("2016-11-16"),//from date
        $lte: ISODate("2016-12-01")}//To date
    }
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2020-12-26
    • 2015-11-25
    • 2020-12-30
    • 1970-01-01
    相关资源
    最近更新 更多