比较MongoDB中的日期(moment.js)

时间:2015-07-17 11:56:42

标签: mongodb momentjs

我想比较MongoDB和我约会的日期。

此外,我发布了thisthis帖子,我没有找到答案。

我的代码:

  today: function() {
    var today = moment().format();
    return Posts.find({createdAt : { $gte : today}}) // show posts created in "future" , so this function must return nothing
  },

createdAt = moment().format();// in MongoDB

结果这种结构不起作用,但如果我比较谎言:

var today = moment().format();
var daystart  = moment().startOf('day').format();
if (daystart > today){
  console.log ("YES");
}
else if (daystart < today)console.log ("NO");

返回

"NO"

有人帮忙吗?

编辑:

  today: function() {
    var today = moment().toDate();
    var daystart  = moment().startOf('day').toDate();
    // console.log(today + daystart);
    return Posts.find({createdAt : { $gt : today}}) 
  },
  week: function() {
          var today = new Date();
      return Posts.find({createdAt : { $lt : today}}) 
  },
  month: function() {
            var today = new Date();
      return Posts.find({createdAt : { $ne : today}}) 
  }

createdAt = new Date();

2 个答案:

答案 0 :(得分:16)

.format() 方法是一个显示辅助函数,它根据传递的token参数返回日期字符串表示形式。要将MongoDB中的日期与当前日期和时间进行比较,只需在没有参数的情况下调用 moment() ,不使用 .format() 方法并获取Moment.js通过调用 toDate() 方法包装的原生Date对象:

today: function() {
    var now = moment().toDate();
    return Posts.find({createdAt : { $gte : now }});
}

答案 1 :(得分:1)

使用Moment JS在JavaScript中将日期转换为MongoDB ISODate格式

MongoDB使用ISODate作为其主要日期类型。如果要将日期对象插入MongoDB集合中,则可以使用 Date() Shell方法。

您可以通过将ISO-8601日期字符串(其年份在0到9999之间的范围内)传递给 new Date()构造函数或ISODate()函数来指定特定日期。这些函数接受以下格式:

  • 新日期("<YYYY-mm-dd>"返回具有指定日期的ISODate。
  • 新日期("<YYYY-mm-ddTHH:MM:ss>"在客户的本地时区中指定日期时间,并以UTC返回具有指定日期时间的ISODate。
  • 新日期("<YYYY-mm-ddTHH:MM:ssZ>"以UTC指定日期时间,并以UTC返回具有指定日期时间的ISODate。
  • new Date()将日期时间指定为自Unix时代(1970年1月1日)以来的毫秒数,并返回生成的ISODate实例。

如果您正在用JavaScript编写代码,并且想要传递JavaScript日期对象并将其与MongoDB客户端一起使用,则要做的第一件事就是将JavaScript日期转换为MongoDB日期格式(ISODate)。操作方法如下。

    var today = moment(new Date()).format('YYYY-MM-DD[T00:00:00.000Z]');
    console.log("Next day -- " + (reqDate.getDate() + 1))
    var d = new Date();
    d.setDate(reqDate.getDate() + 1);
    var tomorrow = moment(d).format('YYYY-MM-DD[T00:00:00.000Z]');

您可以使用新的Date()Shell方法将今天和明天的对象传递给MongoDB查询。

  MongoClient.connect(con, function (err, db) {
    if (err) throw err
    db.collection('orders').find({ "order_id": store_id, "orderDate": {     
       "$gte": new Date(today), "$lt": new Date(tomorrow)}
     }).toArray(function (err, result) {
        console.log(result);
        if (err) throw err
          res.send(result);
    })
  })