#javascript #mongodb #datetime #mongodb-query
Вопрос:
Я пытаюсь сделать запрос mongo, который возвращает все активные списки на основе $currentDate
{
$and: [
{
start_time: {
$lte: {
$currentDate: {
$type: "date"
}
}
}
},
{
end_time: {
$gte: {
$currentDate: {
$type: "date"
}
}
}
}
]
}
но он ничего не возвращает, но если я настрою end_time:{$gte
{$lte
отображение ВСЕХ списков, значит, должно быть что-то не так
Я помещаю даты в БД с помощью javascript
if (checked) {
var d = new Date()
d.setSeconds(d.getSeconds() values.sale_price * 100)
setFieldValue('start_time', { date: new Date() })
setFieldValue('end_time', { date: d })
}
я думаю, что это может быть неправильно при добавлении секунд к конечному времени, но не уверен
а вот копия документа БД
{
"_id": {
"$oid":"61401b66t4e445t5j43j748e"
},
"name": "test",
"sale_price": {
"$numberInt": "5000"
},
"start_time": {
"date": "2021-09-14T03:47:31.918Z"
},
"end_time":{
"date": "2021-09-19T22:40:51.918Z"
}
}
Комментарии:
1.
$currentDate
используется для обновления документов, вы не можете использовать его в запросах.
Ответ №1:
db.collection.find({
$and: [
{
"start_time.date": {
$lte: new Date()
}
},
{
"end_time.date": {
$gte: new Date()
}
}
]
})
Вот рабочий пример
Примечание: Убедитесь, что типом start_time.date
данных и end_time.date
является Дата, а не строка
Комментарии:
1. Спасибо! @chandan Я вижу, что это работает на игровой площадке, но не в моем проекте, может ли быть так, как я вводлю даты js?
2. его код javascript выше « setFieldValue(‘start_time’, { дата: новая дата ()}) ` » Я думаю, что монго каким-то образом не анализирует его в ISODate
3. @dovigz поделись
setFieldValue
реализацией