Я родом из SQL мира, и до сих пор учится запрос MongoDB, и я столкнулся с этой проблемой ...MongoDB Запрос на поле последнего документа в гнездовой массив
Установка:
У меня есть коллекция Студент, который имеет множество совещаний
student: {
meetings: [
{time: x},
{time: y},
{time: z}
]
}
встречи массив имеет динамический размер, а его элементы сортируются по времени в ИСС, так что первая встреча в массиве будет иметь самое раннее время.
Я могу запросить, чтобы все студенты, чьи первые встречи начинается по истечении определенного времени:
db.students.find({ "meetings.0.time": {$gt: ISODate()} })
Вопрос:
Теперь мне нужно запросить, чтобы получить все студенты, чьи ПОСЛЕДНИЙ встреча начинается до некоторое время. Однако следующее не было выполнено:
db.students.find({ "meetings.-1.time": {$lt: ISODate()} })
Как вы решите эту проблему?
Невозможно правильно ответить на телефон. Купите, вы сможете сделать это, используя структуру агрегации. Посмотрите на документы mongodb. – sambomartin
Если последний раз меньше даты, то все времена в массиве будут меньше этой даты. может быть, встречается.forEach.time будет работать? –
«ПОСЛЕДНИЕ» по положению в массиве или «ПОСЛЕДНИЕ», как в «последнем»? –