В настоящее время я использую следующий найти запрос, чтобы получить последнюю версию документа определенного IDколлекция Метеора получить последний документ каждого выбора
Conditions.find({
caveId: caveId
},
{
sort: {diveDate:-1},
limit: 1,
fields: {caveId: 1, "visibility.visibility":1, diveDate: 1}
});
Как я могу использовать тот же, используя несколько идентификаторов с $, например, в
Я попробовал его со следующим запросом. Проблема в том, что он ограничит документы до 1 для всех найденных caveIds. Но он должен установить предел для каждого другого caveId.
Conditions.find({
caveId: {$in: caveIds}
},
{
sort: {diveDate:-1},
limit: 1,
fields: {caveId: 1, "visibility.visibility":1, diveDate: 1}
});
Одно из решений, с которыми я столкнулся, использует совокупную функциональность.
var conditionIds = Conditions.aggregate(
[
{"$match": { caveId: {"$in": caveIds}}},
{
$group:
{
_id: "$caveId",
conditionId: {$last: "$_id"},
diveDate: { $last: "$diveDate" }
}
}
]
).map(function(child) { return child.conditionId});
var conditions = Conditions.find({
_id: {$in: conditionIds}
},
{
fields: {caveId: 1, "visibility.visibility":1, diveDate: 1}
});
Я думаю, вам нужно изучить https://docs.mongodb.org/manual/reference/method/db.collection.distinct/ –