Aks*_*rma 16 linq mongodb c#-4.0
其中哪一个查询性能更好,一个使用linq,另一个使用本机查询机制
LINQ
var query =
collection.AsQueryable<Employee>()
.Where(e => e.FirstName == "John")
.Select(e => e);
NATIVE
var query= Query<Employee>.EQ(e => e.FirstName, "John");
var emp = collection.FindOne(query);
Run Code Online (Sandbox Code Playgroud)
我假设mongoDb中的本机查询机制会更好,因为据我所知,它会过滤掉数据库中的结果,其中linq首先获取集合中的所有项目,然后过滤结果.我应该什么时候考虑使用LINQ而不是本机查询机制?
And*_*ich 20
因为,据我所知,它过滤掉数据库中的结果,其中linq首先获取集合中的所有项目,然后过滤结果
不,不,不.它过滤数据库级别的所有内容.
第二个不是构建mongodb查询的本机方式.它仍然是相同的包装器,只需构建真正的本机 mongod查询(例如{"a": 1, "b": 2 }).
第一个查询使用表达式树来构建mongo查询.第二个使用反射来构建相同的查询.据我所知,表达树应该更快(这是我发现的第一篇文章).无论如何,我不认为性能差异至关重要.所以只需使用你喜欢的东西.
至于我,我使用linq进行大多数查询,有些开发人员甚至可能对mongo不太了解,但是这方面的黑方是你实际上可能没有意识到它可以为你构建什么查询.(与linq到sql的情况相同).但您仍然可以记录所有本机查询,查看它们并查找优化和更改的位置.对于复杂的查询,我通常使用第二种方法.