У меня есть коллекция в mongodb, которая имеет следующий формат:
{
parentId: "12345akNu",
createdAt: "2018-12-02",
complete: false
}
Я хотел бы найти все самые последние записи для набора parentId, которые не завершены. В настоящее время у меня есть этот запрос, чтобы найти все записи, но я не могу понять, как получить только последние записи.
collection.find({ parentId: { $in: list_of_ids }, completed: false});
Для отдельных записей это случай использования findOne
с сортировкой по {createdAt: -1}
, но мне нужно выполнить это в одном запросе для нескольких записей, если это возможно.
Обновить
Поскольку это было предложено закрыть, я обновляю и уточняю запрос.
Это для приложения Meteor, которое (на стороне клиента) имеет ограниченный интерфейс для драйверов mongodb, поддерживая только find
и findOne
. Было бы идеально, если бы этого можно было достичь только с помощью этих вызовов.
collection.aggregate([ { parentId: { $in: list_of_ids }, completed: false}, {"$sort":{"createdAt":-1}}, {"$group":{ "_id":"$parentId", "first":{"$first":"$$ROOT"} }} ])
- person s7vr   schedule 14.01.2018