Поскольку дата и время являются строками, для правильного запроса вы можете преобразовать их в действительную дату.
Вы можете использовать агрегацию с $ project и $ dateFromString примерно так:
db.inventory.aggregate([
{
$project: {
_id: 0,
date: {
$dateFromString: {
dateString: { $concat: ["$date", "T", "$time"] },
format: "%d/%m/%YT%H:%M" // <-- specify the format for the conversion
}
}
}
},
{
$match: {
date: { $gte: ISODate("2018-03-20") } // <-- get all after 2018
}
}
])
Вы можете видеть это , работающий здесь
Обратите внимание, что $dateFromString
- это Монго версия 3.6 и выше
Обновление
Если вам действительно нужно запросить часы / минуты, вы можете добавить другой прогноз с помощью $ dateToParts :
db.collection.aggregate([
{
$project: {
_id: 0,
date: {
$dateFromString: {
dateString: {
$concat: ["$date", "T", "$time"]
},
format: "%d/%m/%YT%H:%M"
}
}
}
},
{
$project: {
date: 1,
parts: { $dateToParts: { date: "$date" }}
}
},
{
$match: {
"parts.hour": {
$gte: 10 // <-- get hours bigger or equal 10
}
}
}
])
Вы можете поиграть со вторым примером и посмотреть его здесь работает