【问题标题】:Convert this SQL query to mongodb query -将此 SQL 查询转换为 mongodb 查询 -
【发布时间】:2017-12-19 07:56:29
【问题描述】:

我是 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"
  }
]

【问题讨论】:

  • 你有什么错误吗?

标签: mysql sql mongodb


【解决方案1】:

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

查询示例:

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

【讨论】:

    【解决方案2】:

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

    var endDate=new Date()

    然后试试下面的代码:

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

    【讨论】:

    • endDate 字段不存在。尝试使用 endTime 但出现语法错误
    • db.trip.find({"status": "CONNECTION_LOST",endTime:{$gte:new Date(endTime-15*60*1000),$lt:new Date()}} ) 2017-12-19T08:38:39.864+0000 E QUERY [thread1] ReferenceError: endTime 未定义:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    相关资源
    最近更新 更多