У меня возникла ситуация, когда мне нужно сопоставить данные между двумя коллекциями.Найти первый документ после указанной даты
Я хочу получить время от документа в одной коллекции, а затем найти либо первый документ, который приходит или после этого времени в другой коллекции.
Времена, как правило, не выровнены, и могут быть случаи, когда между ними существует значительный промежуток времени.
В настоящее время я использую это (в Node.js, используя родной драйвер):
coll.find({ 'TimeIndex':
{
'$lt': new Date(startTime.getTime() + 1000*10),
'$gte': startTime
}
});
Но, запеченный в есть предположение, что будет точкой в течение 10 секунд. А что, если нет? Тогда мне нужно сделать какой-то расширенный поиск?
Я мог бы удалить $ lt и просто взять первый отсортированный результат, но тогда я боюсь, что пространство поиска будет слишком большим, и оно будет очень медленным.
Есть ли лучший способ сделать это, что мне не хватает?
Если вы ищете только один документ, вы можете использовать findOne вместо поиска, поскольку вы упомянули, что хотите получить первый документ после ввода. –
Интересно, но, видимо, findOne устарел в пользу find(). Limit (1) –
Да, имеет смысл, findOne останавливает сканирование, как только он получает первый документ, то же самое, что и ограничение 1. Я полагаю. Хотя я и не знал, что это устарело. –