想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动。C#版的驱动貌似有很多种,如官方提供的samus。 实现思路大都类似。这里我们用官方提供的mongo-csharp-driver :

下载地址:http://github.com/mongodb/mongo-csharp-driver/downloads

解压之后得到两个dll:

MongoDB.Driver.dll:顾名思义,驱动程序

MongoDB.Bson.dll:序列化、Json相关

然后在我们的程序中引用这两个dll。

2、连接数据库

  1. using MongoDB.Bson;
  2. using MongoDB.Driver;
  1. //数据库连接字符串
  2. const string strconn = "mongodb://127.0.0.1:27017";
  3. //数据库名称
  4. const string dbName = "test";
  5. MongoServer server;
  6. MongoDatabase db;
  7. void Init()
  8. {
  9. //创建数据库链接
  10. server = MongoDB.Driver.MongoServer.Create(strconn);
  11. //获得数据库
  12. db = server.GetDatabase(dbName);
  13. }

3、查询数据

1)查询规则集合

  1. class Users
  2. {
  3. public ObjectId _id;//BsonType.ObjectId 这个对应了 MongoDB.Bson.ObjectId
  4. public string Name { get; set; }
  5. public string Sex { set; get; }
  6. }
  7. const string ENTER = "\r\n";
  8. private void btnQuery_Click(object sender, EventArgs e)
  9. {
  10. //获取Users集合
  11. MongoCollection col = db.GetCollection("Users");
  12. //查询全部集合里的数据
  13. var result1 = col.FindAllAs<Users>().ToList();
  14. StringBuilder sb = new StringBuilder("");
  15. foreach (Users user in (List<Users>)result1)
  16. {
  17. sb.Append(user.Name + ENTER);
  18. }
  19. MessageBox.Show(sb.ToString());
  20. }

这种方式只适合每个文档(document)结构都一样的集合:

但是NoSql诟病关系型数据库的论点之一,就是这种所谓每条记录的结构都要保持一致的情况,因为有些字段不是所有记录的必须。那么,在mongoDB这里,对于集合中文档结构不一致的情况下,上述代码获取不到数据,似乎应该采用如下方式:

2)查询不规则集合

集合情况:

在集合thins里,基本上每个文档结构都不一样。

查找代码如下:

    1. private void btnQuery2_Click(object sender, EventArgs e)
    2. {
    3. //获取thins集合
    4. MongoCollection col = db.GetCollection("thins");
    5. //查询全部集合里的数据
    6. var result1 = col.FindAllAs<BsonDocument>().ToList();
    7. StringBuilder sb = new StringBuilder("");
    8. foreach (BsonDocument bd in (List<BsonDocument>)result1)
    9. {
    10. string name = bd.Contains("name") ? bd.GetValue("name").ToString() : "不存在";
    11. sb.Append(name + ENTER);
    12. }
    13. MessageBox.Show(sb.ToString());
    14. }

mongodb 查询的用法的更多相关文章

  1. Mongodb查询的用法,备注防止忘记

    最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find()  //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...

  2. mongodb查询关于大于小于的用法;

    mongoDB查询操作符: http://www.runoob.com/mongodb/mongodb-operators.html 项目中需要的场景是这样的,每个人每天只能领取一张明信片,换句话说, ...

  3. mongodb聚合管道用法

    基本用法 db.collection.aggregate( [ { <stage> }, ... ] ) stage如下 名称 描述 $addFields 将新的字段添加到文档中,输出的文 ...

  4. 【Mongodb教程 第七课 】MongoDB 查询文档

    find() 方法 要从MongoDB 查询集合数据,需要使用MongoDB 的 find() 方法. 语法 基本的find()方法语法如下 >db.COLLECTION_NAME.find() ...

  5. MongoDB查询转对象是出错Element '_id' does not match any field or property of class

    MongoDB查询转对象是出错Element '_id' does not match any field or property of class   解决方法: 1.在实体类加:[BsonIgno ...

  6. MongoDB查询操作限制返回字段的方法

    这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下   映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...

  7. mongodb查询文档

    说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...

  8. [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“

    mongodb 查询条件   这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...

  9. SQL学习:查询的用法(1)

    在SQL servre的使用中,查询的用法是最多的.最重要的,也是最难学习的,因此掌握查询的用法很重要. 先将表的示例上图 员工表: 部门表:                             ...

随机推荐

  1. SharePoint Server 2013开发之旅(三):为SharePoint Server配置App开发、部署、管理环境

    上一篇我讲解了如何利用微软提供的Office 365开发人员网站,进行在线的SharePoint App开发,这当然是不错的一个选择,因为你可以快速地进行开发和调试.(仅仅针对App开发而言).但是, ...

  2. 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用

    在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容, ...

  3. HTML5在移动端开发的12大特性

    1.离线缓存为HTML5开发移动应用提供了基础 HTML5 Web Storage API可以看做是加强版的cookie,不受数据大小限制,有更好的弹性以及架构,可以将数据写入到本机的ROM中,还可以 ...

  4. RHEL6 某业务用户ulimit -a命令找不到

    最终确定是shell环境问题,临时改为/bin/bash即可查看. 1.问题现象 # su - jingyu $ id uid=(jingyu) gid=(jingyu) (jingyu) $ uli ...

  5. java中复制对象通过反射或序列化

    在使用缓存读取数据后修改发现缓存被修改.于是找了下复制对象的方法. 关于对象克隆 按我的理解,对象是包含引用+数据.通常变量复制都是将引用传递过去.比如: Person p1 = new Person ...

  6. JS的一些日期操作

    以下语句,作者都亲自整理,并调试过,转载请注明出处 var nowDate = new Date(); nowDate.getYear(); //获取当前年份(2位) nowDate.getFullY ...

  7. 使用James搭建一个自己的邮箱服务器

    ---第一天开发--- 下载Apache James 3.0邮箱服务器,解压到响应的目录 可以看到目录结构: H:\code\JavaCode\James\apache-james-3.0-beta4 ...

  8. .NET的EF框架中:在应用程序配置文件中找不到名为“”的连接字符串问题

    今天在使用EF Code First框架时,当把模型都定义好了,想通过程序包管理控制台利用enable-migrations –force来生成数据库表的时候报错了,如下: 找不到连接字符串,但是我仔 ...

  9. win10 设置 计算机/此电脑/我的电脑 图标到桌面上

    桌面上右键--个性化 选择右边的 主题选项 然后点击 桌面图标设置 勾选计算机 图标 需要什么图标就勾选哪个就行了 然后点击 确定 这样就可以了

  10. 使用OWIN 为WebAPI 宿主 跨平台

    OWIN是什么? OWIN的英文全称是Open Web Interface for .NET. 如果仅从名称上解析,可以得出这样的信息:OWIN是针对.NET平台的开放Web接口. 那Web接口是谁和 ...