gpt4 book ai didi

linq - MongoDb c# driver LINQ vs Native 查询

转载 作者:IT老高 更新时间:2023-10-28 13:08:32 25 4
gpt4 key购买 nike

这些查询中哪一个使用 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);

我假设 mongoDb 中的 native 查询机制会更好,因为据我了解,它会过滤掉数据库中的结果,因为 linq 首先获取集合中的所有项目,然后过滤结果。我什么时候应该考虑使用 LINQ 而不是 native 查询机制?

最佳答案

since, as far as I understand, it filters out the result in the database where as linq first gets all the items in the collection and then filters for the result

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

第二种方式不是构建 mongodb 查询的原生方式。它仍然是相同的包装器,只是构建真正的 native mongod 查询(例如 {"a": 1, "b": 2 })。

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

就我而言,我对大多数查询使用 linq,一些开发人员甚至可能对 mongo 不太了解,但这里的黑边是您实际上可能没有意识到它可以为您构建什么查询。 (例如与 linq to sql 的情况相同)。但是您仍然可以记录所有 native 查询、查看它们并找到优化、更改的地方。对于复杂的查询,我通常使用第二种方法。

关于linq - MongoDb c# driver LINQ vs Native 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13082537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com