首页 文章资讯内容详情

使用c#对MongoDB进行查询(1)

2026-05-31 2 花语

本文内容纲要:

-1.BsonDocument对象 -2.连接配置 -3.插入数据 -4.查询

1.BsonDocument对象

在MongoDB.Bson命名空间下存在一个BsonDocument类,它是MongoDB的文档对象,代表着MongoDB中不规则数据一条条实体模型。可以使用BsonDocument对不规则数据进行操作,这个类型继承了**IEnumberable<>**类,也就是说又将每一个实体模型看做一个集合,我们可以使用下标方式获取实体模型中的值

// //摘要: //Getsorsetsavaluebyposition. // //参数: //index: //Theposition. // //返回结果: //Thevalue. publicoverrideBsonValuethis[intindex]{get;set;} // //摘要: //Getsorsetsavaluebyname. // //参数: //name: //Thename. // //返回结果: //Thevalue. publicoverrideBsonValuethis[stringname]{get;set;} // //摘要: //Getsthevalueofanelementoradefaultvalueiftheelementisnotfound. // //参数: //name: //Thenameoftheelement. // //defaultValue: //Thedefaultvaluetoreturniftheelementisnotfound. // //返回结果: //Tehvalueoftheelementoradefaultvalueiftheelementisnotfound. [Obsolete("UseGetValue(stringname,BsonValuedefaultValue)instead.")] publicvirtualBsonValuethis[stringname,BsonValuedefaultValue]{get;}

2.连接配置

//连接地址 privatestaticstringconn="mongodb://192.168.11.51:40000"; //数据库名称 privatestaticstringdbName="yan"; //集合名称 privatestaticstringcolName="Demo"; //连接服务端 staticMongoClientclient=newMongoClient(conn); //获取指定数据库 staticIMongoDatabasedb=client.GetDatabase(dbName); //获取指定集合BsonDocument数据库文档对象 staticIMongoCollection<BsonDocument>coll=db.GetCollection<BsonDocument>(colName);

3.插入数据

vardoc=new[] { newBsonDocument{ {"DepartmentName","开发部"}, {"People",newBsonArray { newBsonDocument{{"Name","狗娃"},{"Age",20}}, newBsonDocument{{"Name","狗剩"},{"Age",22}}, newBsonDocument{{"Name","铁蛋"},{"Age",24}} } }, {"Sum",18}, {"dim_cm",newBsonArray{14,21}} }, newBsonDocument{ {"DepartmentName","测试部"}, {"People",newBsonArray { newBsonDocument{{"Name","张三"},{"Age",11}}, newBsonDocument{{"Name","李四"},{"Age",34}}, newBsonDocument{{"Name","王五"},{"Age",33}} } } , {"Sum",4} , {"dim_cm",newBsonArray{14,21}} }, newBsonDocument{ {"DepartmentName","运维部"}, {"People",newBsonArray { newBsonDocument{{"Name","闫"},{"Age",20}}, newBsonDocument{{"Name","王"},{"Age",22}}, newBsonDocument{{"Name","赵"},{"Age",24}} } }, {"Sum",2}, {"dim_cm",newBsonArray{22.85,30}} } }; coll.InsertMany(doc);

4.查询

4.1查询部门是开发部的信息

//创建约束生成器 FilterDefinitionBuilder<BsonDocument>builderFilter=Builders<BsonDocument>.Filter; //约束条件 FilterDefinition<BsonDocument>filter=builder.Eq("DepartmentName","开发部"); //获取数据 varresult=coll.Find<BsonDocument>(filter).ToList(); foreach(variteminresult) { //取出整条值 Console.WriteLine(item.AsBsonValue); }

4.2获取Sum大于4的数据

//创建约束生成器 FilterDefinitionBuilder<BsonDocument>builderFIlter=Builders<BsonDocument>.Filter; //约束条件 FilterDefinition<BsonDocument>filter=builder.Gt("Sum",4); varresult=coll.Find<BsonDocument>(filter).ToList(); foreach(variteminresult) { //取出整条值 Console.WriteLine(item.AsBsonValue); }

4.3And约束

//创建约束生成器 FilterDefinitionBuilder<BsonDocument>builderFilter=Builders<BsonDocument>.Filter; //约束条件 FilterDefinition<BsonDocument>filter=builder.And(builder.Gt("Sum","2"),builder.Eq("DepartmentName","运维")); varresult=coll.Find<BsonDocument>(filter).ToList(); foreach(variteminresult) { //取出整条值 Console.WriteLine(item.AsBsonValue); }

4.4查询指定值

//创建约束生成器 FilterDefinitionBuilder<BsonDocument>builderFilter=Builders<BsonDocument>.Filter; ProjectionDefinitionBuilder<BsonDocument>builderProjection=Builders<BsonDocument>.Projection; //Include包含某元素Exclude不包含某元素 ProjectionDefinition<BsonDocument>projection=builderProjection.Include("DepartmentName").Exclude("_id"); varresult=coll.Find<BsonDocument>(builderFilter.Empty).Project(projection).ToList(); foreach(variteminresult) { //取出整条值 Console.WriteLine(item.AsBsonValue); }

4.5排序

//创建生成器 FilterDefinitionBuilder<BsonDocument>builderFilter=Builders<BsonDocument>.Filter; //排序生成器 SortDefinitionBuilder<BsonDocument>builderSort=Builders<BsonDocument>.Sort; //排序约束Ascending正序Descending倒序 SortDefinition<BsonDocument>sort=builderSort.Ascending("Sum"); varresult=coll.Find<BsonDocument>(builderFilter.Empty).Sort(sort).ToList(); foreach(variteminresult) { //取出整条值 Console.WriteLine(item.AsBsonValue); }

4.6In查询

//创建生成器 FilterDefinitionBuilder<BsonDocument>builderFilter=Builders<BsonDocument>.Filter; FilterDefinition<BsonDocument>filter=builderFilter.In("DepartmentName",new[]{"测试部","开发部"}); varresult=coll.Find<BsonDocument>(filter).ToList(); foreach(variteminresult) { //取出整条值 Console.WriteLine(item.AsBsonValue); }

4.7分页查询

//创建生成器 FilterDefinitionBuilder<BsonDocument>builderFilter=Builders<BsonDocument>.Filter; //分页Skip跳过Limit查询多少 varresult=coll.Find<BsonDocument>(builderFilter.Empty).Skip(1).Limit(1).ToList(); foreach(variteminresult) { //取出整条值 Console.WriteLine(item.AsBsonValue); }

4.8查询总条目数

//创建生成器 FilterDefinitionBuilder<BsonDocument>builderFilter=Builders<BsonDocument>.Filter; //总条目数 varresult=coll.Find<BsonDocument>(builderFilter.Empty).Count();

4.9Linq查询

//创建生成器//linq varresult=fromyincoll.AsQueryable()selectnew{DepartmentName=y["DepartmentName"],id=y["_id"]}; foreach(variteminresult) { Console.WriteLine("DepartmentName:"+item.DepartmentName+"====Id:"+item.id); }

4.10分组查询

//创建生成器 FilterDefinitionBuilder<BsonDocument>builderFilter=Builders<BsonDocument>.Filter; //分组 varresult=fromyincoll.AsQueryable()groupybyy["DepartmentName"]intosselectnew{DepartmentName=s.Key,Count=s.Count()}; foreach(variteminresult) { Console.WriteLine("DepartmentName:"+item.DepartmentName+"====Count:"+item.Count); }

4.11连表查询

//linq //连表查询在这里是自己连自己 varresult=fromuincoll.AsQueryable()joinoincoll.AsQueryable()onu["_id"]equalso["_id"]selectnew{DepartmentName1=u["DepartmentName"],DepartmentName2=u["DepartmentName"]}; foreach(variteminresult) { Console.WriteLine("DepartmentName1:"+item.DepartmentName1+"====DepartmentName2:"+item.DepartmentName2); }

本文内容总结:1.BsonDocument对象,2.连接配置,3.插入数据,4.查询,

原文链接:https://www.cnblogs.com/yan7/p/8603640.html