gpt4 book ai didi

c# - 如何使用官方 MongoDB-CSharp-Driver 将条件运算符动态应用于字段?

转载 作者:IT老高 更新时间:2023-10-28 13:34:55 24 4
gpt4 key购买 nike

我正在尝试生成一个查询,以查找所有成本大于 3 的大型红色事物。

这个查询似乎是我所追求的:

{ "color" : "red", "size" : "large", "cost" : { "$gt" : 3.0 } }

但是,我找不到使用官方 MongoDB CSharp 驱动程序创建成本条件的优雅方法。这是一种似乎创建查询的技巧:

QueryConditionList gt = Query.GT("cost", BsonDouble.Create(3));

QueryDocument query = new QueryDocument();
query.Add("color", "red");
query.Add("size", "large");
query.Add(gt.ToBsonDocument().Elements);

List<BsonDocument> results = events.Find(query).ToList();

另一种似乎可行的方法是这样的:

QueryDocument query = new QueryDocument();
query.Add("color", "red");
query.Add("size", "large");
query.Add("cost", new BsonDocument("$gt", BsonDouble.Create(3)));

List<BsonDocument> results = events.Find(query).ToList();

这些方法中的任何一种都是实现此目的的好方法吗?还有吗?

我需要使用允许我动态构建查询并添加查询中涉及的字段的技术。我希望找到一种通过 query.Add( ) 添加条件的方法,但我不知道这是否可能。

感谢任何帮助。

最佳答案

您可以在整个过程中使用查询构建器,如下所示:

var query = Query.And(
Query.EQ("color", "red"),
Query.EQ("size", "large"),
Query.GT("cost", 3)
);

更新对不起,我明白你在问什么,现在。

你也可以这样做:

int i = 0;
var qc = QueryComplete[3];
qc[i++] = Query.EQ("color", "red");
qc[i++] = Query.EQ("size", "large");
qc[i++] = Query.GT("cost", 3);
var query = Query.And(qc);

这样,您仍然可以使用构建器方法并使其成为动态的。

关于c# - 如何使用官方 MongoDB-CSharp-Driver 将条件运算符动态应用于字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8889363/

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