mongodb新手
C#MongoDb.Driver 2.2.3版
我需要根据用户输入动态构建查询(例如,他们想要搜索哪些数据字段以及每个数据字段的值)。查询需要允许运算符AND / OR。例如,在SQL中,此查询将如下所示:
Select * from products where (Brand='Gucci' AND Category='Bags') OR (Brand='Nike' AND Category='Clothing')
如何使用CSharp Driver在Mongodb中实现这一目标?
到目前为止,我已经通过Builder对象进行了测试和测试:
var filter =
Builders<Product>.Filter.Eq("Brand", "Gucci")
& Builders<Product>.Filter.Eq("Category", "Bags");
var products = productRepository.Collection.Find(filter).ToList();
但不确定如何添加语句的OR部分?
任何帮助表示赞赏。
答案 0 :(得分:1)
你可以使用|对于OR Documentation link
var builder = Builders<Product>.Filter;
var query = builder.Eq("Brand", "Gucci") & builder.Eq("Category", "Bags")
| builder.Eq("Brand", "D&G") & builder.Eq("Category", "Accessory");
var products = productRepository.Collection.Find(query ).ToList();
答案 1 :(得分:0)
或者 你甚至可以用这种方式。
var builder = Builders<Product>.Filter;
var filter1 = builder.Eq("Brand", "Gucci") & builder.Eq("Category", "Bags");
var filter2 = builder.Eq("Brand", "D&G") & builder.Eq("Category", "Accessory");
var query = builder.Or(filter1, filter2);
var products = productRepository.Collection.Find(query).ToList();