Я использую пн goose в nodejs. Я пытаюсь запросить некоторые поля, которые содержат список, на который ссылаются объекты. Я создал две схемы
PILOT
var PilotSchema = new mongoose.Schema({
races: [{type: mongoose.Schema.Types.ObjectId, ref: 'Race'}],
});
RACE
var RaceSchema = new mongoose.Schema({
start_ms: Number,
});
Здесь я написал только соответствующие поля.
В схеме гонки у меня есть ключ start_ms
, который указывает дату начала гонки в миллисекундах, а в поле PilotSchema races
я сохраняю ссылки на многие гонки.
Что я хочу сделать, это:
- Сделать дату в будущем (my_date) в миллисекундах
- Получить все пилоты, у которых нет гонки в интервале (my_date - 2_hours, my_date + 2_hours)
Я пытаюсь сделать пример для объяснения лучше.
Моя дата: 23 февраля 2020 - 12:00:00 (в миллисекундах),
На пилотном поле races
У меня есть много рефенсов на RaceSchema
, и на каждом объекте, к которому добавлен объект, есть время начала гонки.
Теперь запрашиваю коллекцию пилотов, которую я хочу восстановить всех пилотов, у которых на поле races
нет гонки, стартовавшей во время (Feb 23 2020 - 10:00:00 - Feb 23 2020 - 14:00:00
)
. это запрос, но не работает
races: {$not:
{$elemMatch:
{start_ms:
{ "$gt" : min_time, "$lt" : max_time }
}
}
}
Где
min_time, max_time = my_date - 2_hours, my_date + 2_hours
На самом деле я не знаю, как это сделать, я видел, что для получения числа в интервале я могу использовать $gt
и $lt
, но я не понимаю, как запросить массив ссылочных объектов, которые соответствуют этим конкретным c условиям.