无法从MongoDB(Mlab)查询日期 - 如此简单但无法解决

时间:2017-01-09 08:30:01

标签: node.js mongodb mlab

经过数周的努力,我仍然无法使用NodeJS从Mlab查询具有以下结构的日期字段movie_datetime。

"movie_datetime": {
        "$date": "2017-01-03T16:00:00.000Z"
},
"session_id": 31268

enter image description here

我尝试了以下

db.mycollection.find({
  "movie_datetime" : {"gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})

db.mycollection.find({
    "movie_datetime" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})

db.mycollection.find({
    "movie_datetime" : {"$gte": Date("2013-10-01T00:00:00.000Z")}
})

db.mycollection.find({
    "movie_datetime" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})

感谢任何帮助。

当前nodeJS代码

**尝试单引号和双引号的变体并省略.toISOString

var dateTime = '{"movie_datetime":{"$gte" : "'+new Date("2017-01-03T16:00:00.000Z").toISOString()+'"}}';

var dateTimeJson =JSON.parse(dateTimeVar);

db.mycollection.find(dateTimeJson);


Result for print dateTime 
{"movie_datetime":{"$gte" : "2017-01-03T16:00:00.000Z"}}

Result for print dateTimeJson 
{ movie_datetime: { '$gte': '2017-01-03T16:00:00.000Z' } }

节点版本6.6.0

3 个答案:

答案 0 :(得分:2)

如果您正在使用mlab界面,则实际上是这样的:

{
    "createdAt": {
        "$gt": {
            "$date": "2017-11-08T20:05:45.866Z"
        }
    }
}

答案 1 :(得分:0)

我认为应该这样做。

db.myCollection.find({
  'movie_datetime.$date': {
    '$gte': new Date('2013-10-01T00:00:00.000Z')
  } 
});

编辑 - 您发布的图片和您提供的JSON不同。对于图片,它将是 -

db.myCollection.find({
  'date.$date': {
    '$gte': new Date('2013-10-01T00:00:00.000Z')
  } 
});

答案 2 :(得分:0)

检查docs

以下面给出的格式插入日期

{"myDate": {"$date": "2010-07-20T23:23:50Z"}}