mongodb 查询的用法
想要在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、连接数据库
- using MongoDB.Bson;
- using MongoDB.Driver;
- //数据库连接字符串
- const string strconn = "mongodb://127.0.0.1:27017";
- //数据库名称
- const string dbName = "test";
- MongoServer server;
- MongoDatabase db;
- void Init()
- {
- //创建数据库链接
- server = MongoDB.Driver.MongoServer.Create(strconn);
- //获得数据库
- db = server.GetDatabase(dbName);
- }
3、查询数据
1)查询规则集合
- class Users
- {
- public ObjectId _id;//BsonType.ObjectId 这个对应了 MongoDB.Bson.ObjectId
- public string Name { get; set; }
- public string Sex { set; get; }
- }
- const string ENTER = "\r\n";
- private void btnQuery_Click(object sender, EventArgs e)
- {
- //获取Users集合
- MongoCollection col = db.GetCollection("Users");
- //查询全部集合里的数据
- var result1 = col.FindAllAs<Users>().ToList();
- StringBuilder sb = new StringBuilder("");
- foreach (Users user in (List<Users>)result1)
- {
- sb.Append(user.Name + ENTER);
- }
- MessageBox.Show(sb.ToString());
- }
这种方式只适合每个文档(document)结构都一样的集合:
但是NoSql诟病关系型数据库的论点之一,就是这种所谓每条记录的结构都要保持一致的情况,因为有些字段不是所有记录的必须。那么,在mongoDB这里,对于集合中文档结构不一致的情况下,上述代码获取不到数据,似乎应该采用如下方式:
2)查询不规则集合
集合情况:
在集合thins里,基本上每个文档结构都不一样。
查找代码如下:
- private void btnQuery2_Click(object sender, EventArgs e)
- {
- //获取thins集合
- MongoCollection col = db.GetCollection("thins");
- //查询全部集合里的数据
- var result1 = col.FindAllAs<BsonDocument>().ToList();
- StringBuilder sb = new StringBuilder("");
- foreach (BsonDocument bd in (List<BsonDocument>)result1)
- {
- string name = bd.Contains("name") ? bd.GetValue("name").ToString() : "不存在";
- sb.Append(name + ENTER);
- }
- MessageBox.Show(sb.ToString());
- }
mongodb 查询的用法的更多相关文章
- Mongodb查询的用法,备注防止忘记
最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find() //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...
- mongodb查询关于大于小于的用法;
mongoDB查询操作符: http://www.runoob.com/mongodb/mongodb-operators.html 项目中需要的场景是这样的,每个人每天只能领取一张明信片,换句话说, ...
- mongodb聚合管道用法
基本用法 db.collection.aggregate( [ { <stage> }, ... ] ) stage如下 名称 描述 $addFields 将新的字段添加到文档中,输出的文 ...
- 【Mongodb教程 第七课 】MongoDB 查询文档
find() 方法 要从MongoDB 查询集合数据,需要使用MongoDB 的 find() 方法. 语法 基本的find()方法语法如下 >db.COLLECTION_NAME.find() ...
- 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 ...
- MongoDB查询操作限制返回字段的方法
这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...
- mongodb查询文档
说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...
- [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“
mongodb 查询条件 这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...
- SQL学习:查询的用法(1)
在SQL servre的使用中,查询的用法是最多的.最重要的,也是最难学习的,因此掌握查询的用法很重要. 先将表的示例上图 员工表: 部门表: ...
随机推荐
- Java多线程系列--“基础篇”03之 Thread中start()和run()的区别
概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答.本章内容包括:start() 和 run()的区别说明start() 和 run()的区别示例start( ...
- Linux驱动开发——__stringify
在Linux内核中有一个宏__stringify,在include/linux/stringify.h定义如下: #ifndef __LINUX_STRINGIFY_H #define __LINUX ...
- Office Visio简介
Office Visio,是VISIO公司在91年推出的用于制作图表的软件(现在微软收购),在早期它主要用作商业图表制作,后来随着版本的不断提高,新增了许多功能.大多数图形软件程序依赖于艺术技能.Of ...
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误
在visual studio 中添加数据库应用时,报错,提示如下: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL ...
- Android中动态更新ListView(转)
在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中.实现步骤:调用ListView的setOnSc ...
- Android学习笔记之短信验证码的获取和读取
PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...
- java并发编程(3):ThreadLocal
转载:http://www.cnblogs.com/dolphin0520/p/3920407.html 一. 对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有地 ...
- redis学习教程之一基本命令
参阅redis中文的 互动教程(interactive tutorial)来学习的. 目录: 全局操作 get get incr 自增 del 删除 expire 定时 list 队列 set ...
- 在WCF数据访问中使用缓存提高Winform字段中文显示速度
在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析.如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处 ...
- iBoxDB的学习与使用
1. 引言 一次偶然的机会接触到了iBoxDB这样一个小型的嵌入式对象数据库.感觉非常惊讶有这样轻巧的数据库.iBoxDB 本身是一个NOSQL 同时也有关系数据库的特点. 说说iBoxDB的优点: ...