C# 在应用Where条件之前,All()函数是否返回MongoDb中的所有文档?

C# 在应用Where条件之前,All()函数是否返回MongoDb中的所有文档?,c#,asp.net-mvc,mongodb,C#,Asp.net Mvc,Mongodb,我试图通过在.NETMVC项目中使用MongoDb来学习它。我试图找到一个很好的教程来创建企业级的MongoDb库,我认为我做得很好。但我有个问题一直困扰着我 我有一个Get()函数,它根据搜索条件返回对象列表。您可以看到Get()中使用了All()函数。All()是否从DB获取所有文档并应用Where条件?或者,它是否只获取满足Where条件的文档 我无法设置探查器来找到我问题的答案。这就是我在这里问的原因。请不要投反对票 public IList<Article> Get

我试图通过在.NETMVC项目中使用MongoDb来学习它。我试图找到一个很好的教程来创建企业级的MongoDb库,我认为我做得很好。但我有个问题一直困扰着我

我有一个Get()函数,它根据搜索条件返回对象列表。您可以看到Get()中使用了All()函数。All()是否从DB获取所有文档并应用Where条件?或者,它是否只获取满足Where条件的文档

我无法设置探查器来找到我问题的答案。这就是我在这里问的原因。请不要投反对票

    public IList<Article> Get(string UrlText)
    {
        return DbContext.Current.All<Article>().Where(d => d.UrlText.ToLower().Contains(UrlText.ToLower())).OrderBy(d => d.Id).ToList();
    }
public IList Get(字符串UrlText)
{
返回DbContext.Current.All().Where(d=>d.UrlText.ToLower().Contains(UrlText.ToLower()).OrderBy(d=>d.Id.ToList();
}

从.net环境调用MongoDB时,会将其转换为命令,并从该命令创建查询。(我找不到来源,所以这可能不再是真的,但原则是一样的)

然后,当执行游标查询时,指向第一个文档的指针将返回到.net环境,并且方法
All()
将生成游标得到的列表表单。游标只有您请求的项,所以在满足where条件之后

我假设我们使用的是同一个mongo包装器:)

这个原则也适用于Limit、Skip和其他查询,如:Equal、GreaterThen、LeaserThen和所有逻辑方法,如and、Or

编辑:

mongoDB上执行的所有方法的范围都缩小到如下:


这与MongoDb不同,DbContext实际上是实体框架的符号:),或者它是MongoDb集合的自定义包装器。我不知道MongoDb驱动程序中的任何All()函数。我使用的是Norm.dll。所以,All()不会返回所有文档,它只返回我想要的,对吗?如果我记得right NoRM不再处于开发阶段,明智的做法是将twards转换为新的、受支持的版本。是的,它从所有查询中筛选出所有不符合条件的内容。
    private MongoCursor FindAs(Type documentType, IMongoQuery query, IBsonSerializer serializer)
    {
        return MongoCursor.Create(documentType, this, query, _settings.ReadConcern, _settings.ReadPreference, serializer);
    }