gpt4 book ai didi

c# - Mongo 过滤器 'in' 与 linq 版本

转载 作者:可可西里 更新时间:2023-11-01 09:53:29 28 4
gpt4 key购买 nike

什么会更有效:

使用 in 过滤器:

var filter = Builders<Employee>.Filter.In(x => x._id, IdList);

或者,使用 linq 并传递以下表达式:

(x => IdList.Contains(x))

MongoDB 驱动程序是否能够以相同的方式分解两者?

最佳答案

好吧,我想这取决于您使用过滤器或 linq 查询的端点。例如:

collection.Find(Builders<Employee>.Filter.In(x => x.ID, IdList))
collection.Find(x => IdList.Contains(x.ID))

都转化为:

db.Employees.find({
"_id": {
"$in": [
ObjectId("5d462fbd548a6107ccb019b6"),
ObjectId("5d462fbd548a6107ccb019b7")
]
}
})

collection.AsQueryable().Where(x => IdList.Contains(x.ID))
collection.Aggregate().Match(x => IdList.Contains(x.ID))

都转化为:

db.Employees.aggregate(
[
{
"$match": {
"_id": {
"$in": [
ObjectId("5d462fbd548a6107ccb019b6"),
ObjectId("5d462fbd548a6107ccb019b7")
]
}
}
}
]
)

因此,如果您关心查询性能,我认为公平的比较应该是“查找”与“聚合”而不是“过滤器”与“linq”。

afaik,查找和聚合之间的主要区别在于它们(可能)使用不同的查询计划和索引。不确定... you be the judge ...

关于c# - Mongo 过滤器 'in' 与 linq 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57341964/

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