目前我使用下面的查找查询,以获得一定的ID的最新文档的最后文件流星收集得到每个选择
Conditions.find({
caveId: caveId
},
{
sort: {diveDate:-1},
limit: 1,
fields: {caveId: 1, "visibility.visibility":1, diveDate: 1}
});
我如何可以使用相同的使用与$多个ID在例如
我试着用下面的查询。问题在于它会将所有找到的洞穴标识的文件数限制为1。但它应该为每个不同的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/ –