1.BsonDocument对象

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

     //
// 摘要:
// Gets or sets a value by position.
//
// 参数:
// index:
// The position.
//
// 返回结果:
// The value.
public override BsonValue this[int index] { get; set; }
//
// 摘要:
// Gets or sets a value by name.
//
// 参数:
// name:
// The name.
//
// 返回结果:
// The value.
public override BsonValue this[string name] { get; set; }
//
// 摘要:
// Gets the value of an element or a default value if the element is not found.
//
// 参数:
// name:
// The name of the element.
//
// defaultValue:
// The default value to return if the element is not found.
//
// 返回结果:
// Teh value of the element or a default value if the element is not found.
[Obsolete("Use GetValue(string name, BsonValue defaultValue) instead.")]
public virtual BsonValue this[string name, BsonValue defaultValue] { get; }

2.连接配置

 //连接地址
private static string conn = "mongodb://192.168.11.51:40000";
//数据库名称
private static string dbName = "yan";
//集合名称
private static string colName = "Demo";
//连接服务端
static MongoClient client = new MongoClient(conn);
//获取指定数据库
static IMongoDatabase db = client.GetDatabase(dbName);
//获取指定集合 BsonDocument数据库文档对象
static IMongoCollection<BsonDocument> coll = db.GetCollection<BsonDocument>(colName);

3.插入数据

  var doc = new[]
{
new BsonDocument{
{ "DepartmentName","开发部"},
{ "People",new BsonArray
{
new BsonDocument{ { "Name", "狗娃" },{"Age", } },
new BsonDocument{ { "Name", "狗剩" },{"Age", } },
new BsonDocument{ { "Name", "铁蛋" },{"Age", } }
}
},
{"Sum", },
{ "dim_cm", new BsonArray { , } } },
new BsonDocument{
{ "DepartmentName","测试部"},
{ "People",new BsonArray
{
new BsonDocument{ { "Name", "张三" },{"Age", } },
new BsonDocument{ { "Name", "李四" },{"Age", } },
new BsonDocument{ { "Name", "王五" },{"Age", } }
}
}
,
{ "Sum", }
,
{ "dim_cm", new BsonArray { , } } },
new BsonDocument{
{ "DepartmentName","运维部"},
{ "People",new BsonArray
{
new BsonDocument{ { "Name", "闫" },{"Age", } },
new BsonDocument{ { "Name", "王" },{"Age", } },
new BsonDocument{ { "Name", "赵" },{"Age", } }
}
},
{ "Sum", },
{ "dim_cm", new BsonArray { 22.85, } } }
}; coll.InsertMany(doc);

4.查询

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

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

4.2 获取Sum大于4的数据

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

   4.3 And约束  

 //创建约束生成器
FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter;
//约束条件
FilterDefinition<BsonDocument> filter = builder.And(builder.Gt("Sum", ""), builder.Eq("DepartmentName", "运维"));
var result = coll.Find<BsonDocument>(filter).ToList();
foreach (var item in result)
{
//取出整条值
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");
var result = coll.Find<BsonDocument>(builderFilter.Empty).Project(projection).ToList();
foreach (var item in result)
{
//取出整条值
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");
var result = coll.Find<BsonDocument>(builderFilter.Empty).Sort(sort).ToList();
foreach (var item in result)
{
//取出整条值
Console.WriteLine(item.AsBsonValue);
}

  4.6 In查询

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

   4.7  分页查询

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

  4.8查询总条目数

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

4.9Linq查询

 //创建生成器//linq
var result = from y in coll.AsQueryable() select new { DepartmentName = y["DepartmentName"], id = y["_id"] };
foreach (var item in result)
{ Console.WriteLine("DepartmentName:" + item.DepartmentName + "====Id:"+item.id);
}

   4.10分组查询

 //创建生成器
FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter;
//分组
var result = from y in coll.AsQueryable() group y by y["DepartmentName"] into s select new { DepartmentName = s.Key, Count = s.Count() };
foreach (var item in result)
{ Console.WriteLine("DepartmentName:" + item.DepartmentName + "====Count:"+item.Count);
}

  4.11连表查询

 //linq
//连表查询 在这里是自己连自己
var result = from u in coll.AsQueryable() join o in coll.AsQueryable() on u["_id"] equals o["_id"] select new { DepartmentName1 = u["DepartmentName"], DepartmentName2 = u["DepartmentName"] };
foreach (var item in result)
{ Console.WriteLine("DepartmentName1:" + item.DepartmentName1 + "====DepartmentName2:" + item.DepartmentName2);
}

使用c#对MongoDB进行查询(1)的更多相关文章

  1. TODO:MongoDB的查询更新删除总结

    TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...

  2. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  3. Mongodb高级查询【二】

    上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...

  4. mongoDB高级查询$type4array使用解析

    今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...

  5. MongoDb 命令查询所有数据库列表

    原文:http://blog.csdn.net/huxu981598436/article/details/47216493 MongoDb 命令查询所有数据库列表 CODE: > show d ...

  6. mongodb并列查询,模糊查询

    在mongodb的查询语句中可以这么写{“a”:$gt(1),"a":$lt(5)} 但这么查询出来的值会做单个条件匹配,最终结果为a大于1的集合+a小于5的集合 如果需要实现去交 ...

  7. mongodb中查询返回指定字段

    mongodb中查询返回指定字段   在写vue项目调用接口获取数据的时候,比如新闻列表页我只需要显示新闻标题和发表时间,点击每条新闻进入详情页的时候才会需要摘要.新闻内容等关于此条新闻的所有字段.  ...

  8. MongoDB 数据类型查询 — $type使用

    MongoDB 使用过程中经常需要根据字段的类型来查询数据, 而MongoDB中查询字段类型是通过$type操作符来实现. $type使用法语: db.集合名.find({$type:类型值}); / ...

  9. mongoDB 高级查询语法

    http://www.cnblogs.com/ITAres/articles/2084794.html本文参考自官方的手册:http://www.mongodb.org/display/DOCS/Ad ...

  10. 转】Nodejs对MongoDB模糊查询

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/4/ 感谢! Posted: Jul 1, 2013 Tag ...

随机推荐

  1. CodeForces-747B

    在两种情况下不能得到答案:1.n不是4的整数倍 2.某个字符的数量大于n/4 如果满足上述条件直接打印"===",否则填充数组. AC代码: #include<cstdio& ...

  2. Fantasia (Tarjan+树形DP)

    Time Limit: 1000 ms   Memory Limit: 256 MB Description 给定一张N个点.M条边的无向图 $G$ .每个点有个权值Wi. 我们定义 $G_i$ 为图 ...

  3. SQL语句学习

    看似简单,但其实包含很多技巧思维 1.查询课程表中所有科目大于80的学生 select distinct name from student where name not in (select nam ...

  4. shell脚本——mysql

    很期待,学习shell脚本,减少重复工作 自动安装配置mysql脚本: #/bin/bash LOG_FILE=/home/hadoop1/log/installmysql.log function ...

  5. JS分号 惹的坑

    JS中会自动清除句子和句子之间的空格以及tab缩进, 这样就可以允许用户编写的代码更加随性和更加可读, 在该行代码解析的时候如果该行代码可以解析, 就会在该行代码最后自动填写分号,如果该行代码无法解析 ...

  6. Oracle总结【视图、索引、事务、用户权限、批量操作】

    前言 在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了...那么本篇主要总结关于Oralce视图.序列.事务的一些内容... 在数据库中,我们可以把各种的SQL语句分为四大类 ...

  7. shell脚本 字串截取 正则表达式

    字串处理 子串截取方法一:使用${}表达式格式:echo ${x:起始位置:长度}(起始位置编号从0开始,可省略) 方法二:使用expr substr格式:expr substr "$x&q ...

  8. ssh禁止密码登录

    1.root用户登陆后,运行以下第一句指令,其他根据提示进行输入: ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file ...

  9. 错误代码: 1111 Invalid use of group function

    1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:update t_user_info t inner join t_pro_ ...

  10. 中断处理程序不能使用printf的本质

    vxworks 中断处理程序之所以不用printf,本质在于printf是将信息输出到标准输出设备(STDOUT)中, 整个标准输出设备是一个全局变量,由于有semTake操作,那么就会发生阻塞,vx ...