将此SQL查询转换为mongodb查询 -

时间:2017-12-19 07:56:30

标签: mysql sql mongodb

我是MongoDB的新手,所以我需要帮助从下面的SQL查询创建一个mongo查询。我也在尝试创建一个类似于MySQL查询的MongoDB查询。

//SQL
SELECT *
FROM SUMMARY
WHERE STATUS=? AND ENDTIME < (NOW() - interval 15 MINUTE)

// MongoDB
db.trip.find({
    "status": "CONNECTION_LOST",
    "endTime": {
        "$lt" : dateDifference : {
            $subtract: [ new Date(), 15*60*1000 ] 
        }
    } 
})

以下是与旅行相关的mongo文档,日期为ISO格式

[
  {

    "_id" : ObjectId("59b009af802f927038ee05e6"),
    "tripNum" : 644358,
    "startTime" : ISODate("2017-07-20T10:21:11Z"),
    "endTime" : "ISODate("2017-07-20T10:45:11Z"),
    "status" : "CONNECTION_LOST"
  },
  {

    "_id" : ObjectId("59b009erf802f9er38ee05e6"),
    "tripNum" : 644359,
    "startTime" : ISODate("2017-07-20T10:55:11Z"),
    "endTime" : ISODate("2017-07-20T11:21:11Z"),
    "status" : "CONNECTION_LOST"
  }
]

2 个答案:

答案 0 :(得分:1)

您必须将日期计算结果转换为DateISODate)对象。

查询示例:

db.trip.find({
    "status": "CONNECTION_LOST",
    "endTime": { "$lt": new Date(new Date() - 15*60*1000) }
})

答案 1 :(得分:-1)

在Mongodb控制台中运行以下命令:

var endDate=new Date()

然后尝试以下代码:

db.trip.find({"status": "CONNECTION_LOST",endTime:{$gte:new Date(endDate-15*60*1000),$lt:endDate}})