Преобразовать этот запрос SQL в запрос mongodb -

0

Я новичок в MongoDB, поэтому мне нужна помощь для создания запроса mongo из-под SQL-запроса. Я также пытаюсь создать запрос MongoDB, похожий на запрос MySQL.

//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 ] 
        }
    } 
})

Ниже представлен документ о монго, связанный с поездкой и датами, в формате 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 ответа

1
Лучший ответ

Вы должны преобразовать результат вычисления даты в объект Date (ISODate).

Пример запроса:

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

Запустите команду "ниже" в консоли Mongodb:

var endDate=new Date()

Затем попробуйте код ниже:

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

  • 0
    Поле endDate не существует. Пробовал использовать endTime, но получил синтаксическую ошибку
  • 0
    db.trip.find ({"status": "CONNECTION_LOST", endTime: {$ gte: новая дата (endTime-15 * 60 * 1000), $ lt: new Date ()}}) 2017-12-19T08: 38 : 39.864 + 0000 E QUERY [thread1] ReferenceError: endTime не определено:

Ещё вопросы

Сообщество Overcoder
Наверх
Меню