node.js - Mongoose 查询日期时间之间

标签 node.js mongodb express mongoose

您好,请帮我解决这个问题

我需要在 Mongoose 上查询日期时间之间的数据 2016-09-25T00:00:10.000+07:00 至 2016-09-25T01:00:10.000+07:00

在 robomongo 上我使用这个查询,它正在工作查找

db.getCollection('positions').find({unit_id:"863835025684908",
utc_ts : {
    $gte: ISODate("2016-09-25T00:00:10.000+07:00"),
    $lt:  ISODate("2016-09-25T01:00:10.000+07:00")  
    } 
})

我得到了结果

{
"_id" : ObjectId("57e6bd10fa10a661c4145870"),
"updated_at" : ISODate("2016-09-25T00:51:12.673+07:00"),
"created_at" : ISODate("2016-09-25T00:51:12.673+07:00"),
"unit_id" : "863835025684908",
"utc_ts" : ISODate("2016-09-25T00:51:10.000+07:00"),
"recv_utc_ts" : ISODate("2016-09-25T00:51:12.000+07:00"),
"lat" : 14.127961,
"lon" : 100.621365
}

但是当我查询 Mongoose 时我使用这个

var startDate = moment(req.params.startTime).add('hours',7); //req.params.startTime = 2016-09-25 00:00:00
var endDate   = moment(req.params.endTime).add('hours',7); //req.params.endTime = 2016-09-25 01:00:00

//Find 
Positions.find({
    unit_id: req.params.unit_id,
    utc_ts: {
        $gt:  new Date(startDate).toISOString(),
        $lt:  new Date(endDate).toISOString()
    }
}, function(err, positions) {
    if (err) {
        return err
    }
    else {
        //console.log(positions);
        res.json(positions);
    }
});

我看到 Mongoose 调试显示

Mongoose: positions.find({ utc_ts: { '$gt': new Date("Sat, 24 Sep 2016 00:51:10 GMT"), '$lt': new Date("Sat, 24 Sep 2016 01:08:36 GMT") }, unit_id: '863835025684908' }, { fields: undefined })

然后我从查询中得到空数组

最佳答案

我认为您不需要使用Date对象。您可能喜欢使用 momentjsformat() 函数。这里将编写代码来获取位置

var startDate = moment(req.params.startTime).utcOffset('+0700').format("YYYY-MM-DDTHH:mm:ss.SSSZ"); //req.params.startTime = 2016-09-25 00:00:00
var endDate   = moment(req.params.endTime).utcOffset('+0700').format("YYYY-MM-DDTHH:mm:ss.SSSZ"); //req.params.endTime = 2016-09-25 01:00:00

//Find 
Positions.find({
    unit_id: req.params.unit_id,
    utc_ts: {
        $gt:  startDate,
        $lt:  endDate
    }
}, function(err, positions) {
    if (err) {
        return err
    }
    else {
        //console.log(positions);
        res.json(positions);
    }
});

关于node.js - Mongoose 查询日期时间之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683359/

相关文章:

javascript - 使用 $.get 定期轮询 Express 服务器

javascript - 为什么我得到的是 [object object ] 而不是 JSON?

javascript - Node.JS promise 然后添加范围

node.js - 使用 ngrok 在 Windows PC 上为 Slack 在本地开发时无法运行 sudo

node.js - webpack错误: custom keyword definition is invalid: data/errors should be boolean

java - MongoDB+Java : Credentials missing in the user document

java - 由: java. lang.NoSuchMethodError : org. springframework.data.mongodb.core.MongoTemplate.<init>(Lcom/mongodb/Mongo;Ljava/lang/String;)V引起

Node.js 的生成、执行、选项和编码

arrays - MongoDB 如何在给定数组中插入带有_id 的对象

node.js - app.get() 或 router.get() 之间的区别 - ExpressJs