我有一个大型(60m+)文档集合,每个 ID 在时间序列中都有许多记录。每条记录都有一个 IMEI 标识符,我希望为给定的List<Imei>.
蛮力方法是目前正在发生的事情,我为每个 IMEI 创建一个循环并yield从最上面的记录中取出,然后在循环完成后返回一个完整的集合。像这样:
List<BsonDocument> documents = new List<BsonDocument>();
foreach(var config in imeiConfigs)
{
var filter = GetImeiFilter(config.IMEI);
var sort = GetImeiSort();
var data = _historyCollection.Find(filter).Sort(sort).Limit(1).FirstOrDefault();
documents.Add(data);
}
最终结果是 a其中包含eachList<BsonDocument>的最新信息,但它的性能并不高。如果太大,则查询需要很长时间才能运行和返回,因为文档相当大。BsonDocumentIMEIimeiConfigs
有没有办法在单个查询中TOP 1为每个选择IMEI,而不是像我上面那样的蛮力?