mongodb c#驱动程序linq vs本机查询



哪些查询更好的性能明智的是使用linq,而另一个则使用本机查询mehanism

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);

我假设MongoDB中的本机查询机制会更好,因为据我所知,它会在数据库中滤除结果,在该数据库中,作为LINQ首先获取集合中的所有项目,然后将其用于结果。我什么时候应该考虑在本机查询机构上使用LINQ?

,据我了解,它已将结果滤除 LINQ首先获取集合中的所有项目的数据库, 然后过滤结果

不,不,不。它在数据库级别上过滤所有内容。

第二个不是构建mongoDB查询的本地方法。它仍然是同一包装器,只需构建真实的本机 mongod Query(例如{"a": 1, "b": 2 })。

第一个查询使用表达式树来构建mongo查询。第二个使用反射来构建相同的查询。据我所知,表达式树应该更快(这是我发现的第一篇文章)。无论如何,我认为性能差异并不重要。因此,只需使用您喜欢的东西即可。

至于我,我将LINQ用于大多数查询,一些开发人员甚至可能对Mongo了解太多,但是黑色的一面是您实际上可能没有意识到它可以为您构建什么查询。(例如,LINQ到SQL的情况相同)。但是您仍然可以记录所有本机查询,查看它们并找到优化的位置,更改。对于复杂的查询,我通常使用第二种方法。

最新更新