将此 SQL 查询转换为 mongodb 查询 -
Posted
技术标签:
【中文标题】将此 SQL 查询转换为 mongodb 查询 -【英文标题】:Convert this SQL query to mongodb query - 【发布时间】: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"
]
【问题讨论】:
你有什么错误吗? 【参考方案1】:您必须将日期计算结果转换为Date
(ISODate
)对象。
查询示例:
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 未定义:以上是关于将此 SQL 查询转换为 mongodb 查询 -的主要内容,如果未能解决你的问题,请参考以下文章