使用c#对MongoDB进行查询(1)
本文内容纲要:
-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