想要在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. php操作mongodb中的ISODate格式日期

    mongodb 中数据记录的日期格式为"dateCreated" : ISODate("2011-12-20T07:22:50.836Z")经过翻阅php官网中 ...

  2. Spring MVC 学习总结(五)——校验与文件上传

    Spring MVC不仅是在架构上改变了项目,使代码变得可复用.可维护与可扩展,其实在功能上也加强了不少. 验证与文件上传是许多项目中不可缺少的一部分.在项目中验证非常重要,首先是安全性考虑,如防止注 ...

  3. Android自动连接指定的wifi,免密码或指定密码

    一.运行时的状态 遇到一个这样的要求:“不进行扫描操作,怎么对指定的免密码WIFI进行连接(之前没有连接过)”,于是动手写了一个Demo,如图所示未连接成功时的状态,第一个编辑框让用户输入SSID,第 ...

  4. Linux 启动过程分析

    本文仅简单介绍Linux的启动过程,在此基础上做简要的分析.对于Linux启动过程中内部详细的函数调用不做介绍,只是希望本文能给新手起到一个抛砖引玉的作用,以便深入研究Linux的启动过程.下图基本展 ...

  5. iOS_UIImage_Gif的分解

    /** Gif的步骤 1. 拿到Gifd的数据 2. 将Gif分解为一帧帧 3. 将单帧数据转为UIImage 4. 单帧图片保存 */ github地址: https://github.com/ma ...

  6. 【Android】Android Studio 进行代码混淆,打包release APK

    整了一天,感觉坑挺多. 1. 选择如图中的选项Android Studio进行签名打包: 2. 填写APP对应的信息:(最好用个文本记下来放在项目中同步给Team) - Key store path: ...

  7. T-SQL---多值模糊查询的处理

    多值模糊查询的处理 所谓多值模糊查询,就是应用程序中传递过来多个参数,对这些参数做拆分,拆分之后,对拆分结果的key值分别做模糊查询处理 对于精确匹配时,不管是单个Key值还是多个Key值,都很容易处 ...

  8. Math.ceil(a/b)结果出错--原因是a和b不是double

    脑袋短路.连续测试几次发现Math.ceil(188/20)==9; 忍无可忍,突然发现是int问题,顺着表达式走一遍,188/20==9,然后再向上取整.脑袋僵化了.看来一直做简单的不动脑筋的工作, ...

  9. 转 Windows+VS2013爆详细Caffe编译安装教程

    1. 安装cuda Cuda是英伟达推出的GPU加速运算平台 我这里安装的是cuda7.5,已经安装过的忽略,还没有安装过的这里有安装教程.windows下面安装还是非常简单的. 点击打开链接    ...

  10. 利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境

    前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有 ...