public static FilterDefinition <T> ToMongodbFilter(QueryModel3 queryModel) { if (queryModel.QueryUnits != null && queryModel.QueryUnits.Any()) { List <FilterDefinition <T> > unitFilters = new List <FilterDefinition <T> >(); foreach (var unitItem in queryModel.QueryUnits) { var unitFilter = MongodbHelper.HandleQueryUnitModel <T>(unitItem); if (unitFilter != null) { unitFilters.Add(unitFilter); } } return(MongodbHelper.HandleFilterDefinitions(unitFilters, queryModel.LogicalOperator)); } else { var filter = Builders <T> .Filter.Empty; if (queryModel.QueryModels == null || !queryModel.QueryModels.Any()) { return(filter); } List <FilterDefinition <T> > queryModelFilters = new List <FilterDefinition <T> >(); foreach (var queryModel2Item in queryModel.QueryModels) { queryModelFilters.Add(ToMongodbFilter(queryModel2Item)); } return(MongodbHelper.HandleFilterDefinitions(queryModelFilters, queryModel.LogicalOperator)); } }
public static string Test4() { // { "$and" : [{ "FormId" : "CarInfo" }, { "Level1" : "Apple" }, { "CreateDate" : { "$gte" : "2010-01-01", "$lte" : "2020-12-31" } }, { "FormValues" : { "$elemMatch" : { "key" : "key1", "value" : { "$ne" : "", "$lte" : "2020" } } } }, { "FormValues" : { "$elemMatch" : { "key" : "key2", "value" : { "$gte" : "2000", "$lte" : "2020" } } } }] } QueryModel3 queryModel = new QueryModel3() { QueryUnits = new List <QueryUnit>() { new QueryUnit() { Factors = new List <QueryFactor>() { new QueryFactor() { Key = "FormId", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "CarInfo" } } }, new QueryFactor() { Key = "Level1", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "Apple" } } }, new QueryFactor() { Key = "CreateDate", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "2010-01-01", QueryOperator = QueryOperatorKind.GTE }, new QueryFactorOperator() { Value = "2020-12-31", QueryOperator = QueryOperatorKind.LTE } } } } }, new QueryUnit() { ElemMatchName = "FormValues", Factors = new List <QueryFactor>() { new QueryFactor() { Key = "key", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "key1" } } }, new QueryFactor() { Key = "value", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "", QueryOperator = QueryOperatorKind.NE }, new QueryFactorOperator() { Value = "2020", QueryOperator = QueryOperatorKind.LTE } } } } }, new QueryUnit() { ElemMatchName = "FormValues", Factors = new List <QueryFactor>() { new QueryFactor() { Key = "key", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "key2" } } }, new QueryFactor() { Key = "value", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "2000", QueryOperator = QueryOperatorKind.GTE }, new QueryFactorOperator() { Value = "2020", QueryOperator = QueryOperatorKind.LTE } } } } } } }; var filter = QueryModel3Helper <BsonDocument> .ToMongodbFilter(queryModel); return(MongodbHelper.FilterDefinitionToJsonString(filter)); }
public static string Test3() { //1&2&3|(1&(4|5)) QueryModel3 queryModel = new QueryModel3() { LogicalOperator = LogicalOperatorKind.Or, QueryModels = new List <QueryModel3>() { new QueryModel3() { QueryUnits = new List <QueryUnit>() { new QueryUnit() { Factors = new List <QueryFactor>() { new QueryFactor() { Key = "col_1", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "col_1_value" } } }, new QueryFactor() { Key = "col_2", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "col_2_value" } } }, new QueryFactor() { Key = "col_3", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "col_3_value" } } } } } } }, new QueryModel3() { QueryModels = new List <QueryModel3>() { new QueryModel3() { QueryUnits = new List <QueryUnit>() { new QueryUnit() { Factors = new List <QueryFactor>() { new QueryFactor() { Key = "col_1", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "col_1_value" } } }, } } } }, new QueryModel3() { QueryUnits = new List <QueryUnit>() { new QueryUnit() { LogicalOperator = LogicalOperatorKind.Or, Factors = new List <QueryFactor>() { new QueryFactor() { Key = "col_4", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "col_4_value" } } }, new QueryFactor() { Key = "col_5", ValueOperators = new List <QueryFactorOperator>() { new QueryFactorOperator() { Value = "col_5_value" } } } } } } } } } } }; var filter = QueryModel3Helper <BsonDocument> .ToMongodbFilter(queryModel); return(MongodbHelper.FilterDefinitionToJsonString(filter)); }