我试图在我的.NEt MVC项目中使用它来学习MongoDb。我试图找到一个很好的教程来创建使用MongoDb库的企业级别,我想我做得很好。但我有一个问题一直困扰着我。
我有Get()函数,它按搜索条件返回对象列表。你可以看到Get()里面有All<>()函数。是否所有<>()从DB获取所有文档并应用Where条件?或者,它只获得满足Where条件的文档吗?
我无法设置探查器以找到我的问题的答案。这就是我在这里问的原因。拜托,没有downvotes
public IList<Article> Get(string UrlText)
{
return DbContext.Current.All<Article>().Where(d => d.UrlText.ToLower().Contains(UrlText.ToLower())).OrderBy(d => d.Id).ToList();
}
答案 0 :(得分:1)
然后,当执行查询游标时,指向第一个文档将返回到.net环境,方法All<>()
生成一个列表形式,即您获得的游标。光标只有您请求的项目,因此在满足条件之后。
我假设我们使用相同的mongo包装器:)
此原则也适用于限制,跳过,其他查询,如:Equal,GreaterThen,LeaserThen以及所有逻辑方法,如And,或...
修改强>
在mongoDB上执行的所有方法都缩小为类似mongo-csharp-driver:
的方法 private MongoCursor FindAs(Type documentType, IMongoQuery query, IBsonSerializer serializer)
{
return MongoCursor.Create(documentType, this, query, _settings.ReadConcern, _settings.ReadPreference, serializer);
}