C# 构建Mongodb过滤条件

这篇博客介绍了如何在C#中利用MongoDB的过滤器进行复杂查询,包括使用Eq和ElemMatch方法匹配文档中的特定字段。示例展示了强类型和非强类型两种写法,以及直接使用MongoDB查询语句的方式,查询条件为a字段等于11,b字段等于22,并且clist数组中存在riqi为2020-10-2的子文档。
摘要由CSDN通过智能技术生成

以Eq,ElemMatch为例,假如一个document中有a,b,clist三个字段,clist为一个array类型的document,现在想要查询a=11,b=22并且clist中的riqi为2020-10-2的数据写法

1、强类型写法

1

2

3

4

5

FilterDefinition<Test> filterDefinition = filterDefinitionBuilder.And(

                    filterDefinitionBuilder.Eq(r => r.a, 11),

                    filterDefinitionBuilder.Eq(r => r.b, 22),

                    filterDefinitionBuilder.ElemMatch(r => r.clist,

                        r => riqi == '2020-10-2'));

2、非强类型写法

1

2

3

4

5

6

7

8

FilterDefinitionBuilder<BsonDocument> filterDefinitionBuilder = new FilterDefinitionBuilder<BsonDocument>();

                FieldDefinition<BsonDocument> fieldDefinition = "clist";

                FilterDefinitionBuilder<BsonDocument> filterDefinitionZiBuilder = new FilterDefinitionBuilder<BsonDocument>();

                FilterDefinition<BsonDocument> filterDefinition = filterDefinitionBuilder.And(

                    filterDefinitionBuilder.Eq("a", 11),

                    filterDefinitionBuilder.Eq("b", 22),

                    filterDefinitionBuilder.ElemMatch(fieldDefinition, filterDefinitionZiBuilder.Eq("riqi""2020-10-2")));

                 

3、也可以直接使用mongo语句

1

FilterDefinition<BsonDocument> filter = @"{""a"":11,""b"":22,""clist"": { ""$elemMatch"": { ""riqi"": ""2020-10-2""} } }";

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值