【转载】MongoDB基本操作
Document-oriented storage
Json格式的文档存储。用过ajax的朋友都知道Json长啥样{"key","value"}
Full Index Support
和数据库一样,MongoDB也支持索引。
Replication & High Availability
MongoDB也良好的支持多台Server之间的数据同步,保证一个挂掉还能继续干活。
Auto-Sharding
自动发现Server,负载均衡,避免单点故障。
Querying
丰富的基于document的查询。后面我们会举例介绍。
Fast In-Place Updates
会根据不同的情况进行数据更新
Map/Reduce
灵活的聚集和数据处理。
GridFS
GirdFS是MongoDB的大文件存储系统,比如图片、音频、视频。
呵呵,心动不如行动,我们可以试试他的Try It Out,进行命令行的操作。当然,这不是C#。
下载MongoDB,自己使用版本无所谓,服务器使用如果处理大文件,就要用64bit的,因为32的只能处理<2G的文件。 关于安装,很多朋友的博文都有介绍,搜索一下就可以了,都是图文并茂的。但是有一点我要提醒下,就是关于安装成Windows 服务,是有点问题的,起码Windows 7是这样,我们首先要建立一个log.txt,然后使用--logpath ="\"d:\mongodb\log.txt""--install来进行安装,然后去注册表把此服务的值改成--dbpath="\"d:\mongodb\db\""--service。因为很多人的介绍不是用--install,这样我是安装不成功的。
C#客户端
我们.NET自然要去使用C#来和MongoD服务进行通信,幸好有社区的好心人写了MongoDB的.NET Driver 。有三种,Mongodb-csharp、Simple-cshapr和NoRM(http://www.mongodb.org/display/DOCS/C+Sharp+Language+Center )。我就使用Mongodb-csharp(http://github.com/samus/mongodb-csharp),因为他支持Document和Linq两种方式。如果担心Linq的性能问题可以使用document。 引用Mongodb-csharp的dll,我们就可以操作MongoDB了。下面是别人写的简单的使用方法:
01
|
var mongo = new Mongo();
|
02
|
mongo.Connect();
|
03
|
// 打开myorders数据库.
|
04
|
Database db = mongo.GetDatabase( "myorders" );
|
05
|
// 获取orders 集合.
|
06
|
IMongoCollection orders = db.GetCollection( "orders" );
|
07
|
//插入文档
|
08
|
var order = new Document();
|
09
|
order[ "OrderAmount" ] = 57.22;
|
10
|
order[ "CustomerName" ] = "Elmer Fudd" ;
|
11
|
// Add the new order to the mongo orders colleciton.
|
12
|
orders.Insert( order );
|
13
|
//插入多个文档
|
14
|
// Create new orders.
|
15
|
var order1 = new Document();
|
16
|
order1[ "OrderAmount" ] = 100.23;
|
17
|
order1[ "CustomerName" ] = "Bugs Bunny" ;
|
18
|
var order2 = new Document();
|
19
|
order2[ "OrderAmount" ] = 0.01;
|
20
|
order2[ "CustomerName" ] = "Daffy Duck" ;
|
21
|
IEnumerable< Document > orderList = new List< Document > {order1, order2};
|
22
|
// Insert an IEnumerable.
|
23
|
orders.Insert( orderList );
|
24
|
//更新
|
25
|
var selector = new Document {{ "CustomerName" , "Daffy Duck" }};
|
26
|
Document docToUpdate = orders.FindOne( selector );
|
27
|
Console.WriteLine( "Before Update: " + docToUpdate );
|
28
|
// I'm in the money!
|
29
|
docToUpdate[ "OrderAmount" ] = 1000000.00;
|
30
|
// Update Daffy's account before Hasaan finds him.
|
31
|
orders.Update( docToUpdate );
|
32
|
//查找
|
33
|
// Create a specification to query the orders collection.
|
34
|
var spec = new Document();
|
35
|
spec[ "CustomerName" ] = "Elmer Fudd" ;
|
36
|
// Run the query.
|
37
|
Document result = orders.FindOne( spec )
|
38
|
//linq 查找
|
39
|
// Query the orders collection.
|
40
|
IQueryable<Document> results =
|
41
|
from doc in orders.AsQueryable()
|
42
|
where doc.Key( "CustomerName" ) == "Elmer Fudd"
|
43
|
select doc;
|
44
|
Document result = results.FirstOrDefault();
|
45
|
//删除
|
46
|
// Delete documents matching a criteria.
|
47
|
orders.Delete( new Document {{ "CustomerName" , "Elmer Fudd" }} );
|
48
|
Console.WriteLine( string .Format( "Document Count After Deleting Elmer Fudd: [ {0} ]" , orders.Count() ) );
|
49
|
// Delete all docs.
|
50
|
orders.Delete( new Document() );
|
如果向像SqlServer那样查看数据库的数据,目前也有很多客户端支持,MongoVUE不错,我用过。我想大家可以试着自己写哥客户端:)
当我们查看具体集合的时候发现一个问题,就是MongoDB会自动增加一个_id字段,其值长的很像Guid,默认为索引字段。如果我们要自定义这个字段的话,在设计实体类时,在“主键”字段上增加一个属性[MongoId]即可。
在设计实体类时,字段也不能用于偏僻的类型,比如XElement,在读的时候Mongodb-csharp反序列化会抛出异常,所以建议使用string来代替。如果不爱使用document,喜欢linq查询,存储的时候如果某个集合存储某个类型的各种子类,在GetCollection<T>的时候也不能完成正确子类的反序列化,这些问题大家在使用的过程中会慢慢发现,也可以邮件订阅Mongodb-csharp的google group(发送空邮件到mongodb-csharp@googlegroups.com)。
【转载】MongoDB基本操作相关推荐
- python连接mongodb进行查询_Python中的MongoDB基本操作:连接、查询实例
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案.它的特点是高性能.易部署.易使用,存储数据非常方便. MongoDB 简单使用 联 ...
- MongoDB基本操作(Nosql数据库入门与实践)
数据库建立 创建自定义数据库 use 数据库名 use goodsdb 如果goodsdb数据库不存在,则新建立数据库:如果goodsdb数据库存在,则连接该数据库 查看数据库 show dbs 对于 ...
- Mongodb 基本操作
mongo简介 1.基于分布式文件存储的数据库. 为 WEB应用提供可扩展的高性能数据存储解决方案. 2.Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言, 几乎可 ...
- MongoDB基本操作(增删改查)
2019独角兽企业重金招聘Python工程师标准>>> 基本操作 基本的"增删查改",在DOS环境下输入mongo命令打开shell,其实这个shell就是mon ...
- mongodb基本操作=增删改查
这两天总算清闲下来了,这里只介绍mongodb的一些基本增删改查,从大到小,从数据库到下面的集合表等,这里推荐一个mongodb的可视化工具Robo3T,在上面操作增删改查使用起来也简单 数据库相关的 ...
- [转载]MongoDB开发学习 经典入门
如果你从来没有接触MongoDB或对MongoDB有一点了解,如果你是C#开发人员,那么你不妨花几分钟看看本文.本文将一步一步带您轻松入门. 阅读目录 一:简介 二:特点 三:下载安装和开启服务器 四 ...
- Mongodb基本操作之.net
1.下载官方for C#驱动 2.导入2个dll文件 3.连接字符串 <add key="MongoConn" value="mongodb://127.0.0.1 ...
- [转载]MongoDB的$inc修改器
MongoDB的$inc修改器相当于编程语言中的 "+=" "$inc"只能用于操作数值类型的数据,包括整数.长整数和双精度浮点数,用于其他类型的数据会导致操作 ...
- 初识MongoDB(一) mongodb基本操作
使用背景: 项目中需要存储一些下游的需求,需求的的格式是个树形的格式,例如某个需求里面包含n个城市某个品牌某个车系,可以简化成下图.(只是作为使用场景来分析,可以跳过) 按照关系型数据库来说的话,有两 ...
最新文章
- Nature子刊:利用转细菌基因植物修复土壤有毒污染物!
- R 语言开发环境搭建
- Visual Studio下包含多项目的解决方案及项目间引用
- js中的window.onload和jquery中的load区别的讲解
- 关于c++中map插入元素的问题
- php mysql 无法查询中文名字_PHP连接MySQL查询中文时显示Notice: Trying to get property of non-object...
- 关于我的知识星球服务
- php会员整合,会员整合Ucenter/Discuz!/PHPWind教程
- Spring框架----自动按照类型注入的Autowired注解
- gcc之UTF-8编码
- html5d调用百度语音,易语言调用百度语音平台实现文字转换语音功能的代码
- 【博士后招聘】清华大学计算机系自然语言处理与社会人文计算实验室面向海内外招聘博士后...
- 压力大对身体有没有伤害,你觉的有伤害就有伤害,你觉的没伤害就没伤害
- 在浏览器中简单输入一个网址,解密其后发生的一切(http请求的详细过程)
- Qt之调用笔记本摄像头录像功能
- 写给即将入行的程序员的一封信
- Web前端期末大作业---新农村建设网页设计
- linux三国杀,三国杀!Linux、openSUSE和Ubuntu对比
- Paraview Programmable filter
- 华为网络安全论述题解析(2)
热门文章
- NLP复习资料(6)-第十章 语义分析
- mysql hp ux_hp ux apa 切换
- GCC for Win32开发环境介绍
- JAVA中神奇的双刃剑--Unsafe
- CentOS7 使用 firewalld 打开关闭防火墙与端口
- spring 的4种事务管理(1种编程式+3种声明式)
- 网络性能测试工具iperf详细使用图文教程【转载】
- fastjson与spring mvc整合的配置
- VUE2第五天学习---自定义指令
- 第十五届北京师范大学程序设计竞赛决赛(网络同步赛) B lca水 D 思维,找规律...