我有这样的代码,我想使用 Linq 查询 MongoDB。
我从 MongoDB 集合中得到了一个 AsQueryable。
public IEnumerable<IVideo> GetVideos()
{
var collection = database.GetCollection<IVideo>("Videos");
return collection.AsQueryable();
}
我这样称呼它
var finalList = Filter2(Filter1(GetVideos())).Skip(2).Take(30);
foreach(var v in finalList)
{
....
}
带有查询的函数。
public IEnumerable<IVideo> Filter1(IEnumerable<IVideo> list)
{
return list.Where(q=>q.Categorized)
}
public IEnumerable<IVideo> Filter2(IEnumerable<IVideo> list)
{
var query = from d in list
where d.File == "string1" || d.File == "string2"
select d;
return query;
}
我的代码工作正常。我的代码托管在 IIS 中,大约有 50,000 条记录,查询比示例稍微复杂一些。当调用 foreach 时,我的工作进程飙升至 17% 并且需要几秒钟才能执行。对于如此低的日期数量,这是一个荒谬的高。
我有一些问题。
- 查询是由 .net 还是 MongoDB 执行的?如果它是由 MongoDB 执行的,为什么我的工作进程会受到如此大的打击?
- 我可以采取哪些步骤来改进执行时间以呈现查询并减少服务器负载。
谢谢