以Eq,ElemMatch為例,假如一個document中有a,b,clist三個字段,clist為一個array類型的document,現在想要查詢a=11,b=22並且clist中的riqi為2020-10-2的數據寫法
1、強類型寫法
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、非強類型寫法
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語句
FilterDefinition<BsonDocument> filter = @"{""a"":11,""b"":22,""clist"": { ""$elemMatch"": { ""riqi"": ""2020-10-2""} } }";