标签:des style blog http color io os 使用 ar
Agile and Scalable
MongoDB (from "humongous") is an open-source document database, and the leading NoSQL database. Written in C++, MongoDB features:
JSON-style documents with dynamic schemas offer simplicity and power.
Index on any attribute, just like you‘re used to.
Mirror across LANs and WANs for scale and peace of mind.
Scale horizontally without compromising functionality.
Rich, document-based queries.
Atomic modifiers for contention-free performance.
Flexible aggregation and data processing.
Store files of any size without complicating your stack.
Monitoring and backup designed for MongoDB.
Reduce cost, accelerate time to market, and mitigate risk with proactive support and enterprise-grade capabilities.
关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合”
就是对应关系数据库中的“表”,“文档”对应“行”。
一: 下载
上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了,不过这里有两点注意:
①:根据业界规则,偶数为“稳定版”(如:1.6.X,1.8.X),奇数为“开发版”(如:1.7.X,1.9.X),这两个版本的区别相信大家都知道吧。
②:32bit的mongodb最大只能存放2G的数据,64bit就没有限制。
①:启动之前,我们要给mongodb指定一个文件夹,这里取名为”db",用来存放mongodb的数据。
②:微软徽标+R,输入cmd,首先找到“mongodb”的路径,然后运行mongod开启命令,同时用--dbpath指定数据存放地点为“db”文件夹。
③:最后要看下是否开启成功,从图中的信息中获知,mongodb采用27017端口,那么我们就在浏览器里面键入“http://localhost:27017/”,
打开后,mongodb告诉我们在27017上Add 1000可以用http模式查看mongodb的管理信息。
由于是开篇,就大概的说下基本的“增删查改“,我们再开一个cmd,输入mongo命令打开shell,其实这个shell就是mongodb的客户端,
同时也是一个js的编译器,默认连接的是“test”数据库。
2、切换/创建数据库
>use yourDB;
当创建一个集合(table)的时候会自动创建当前数据库
查询所有数据库
show dbs;
查看当前使用的数据库
db.getName();
db;
db和getName方法是一样的效果,都可以查询当前使用的数据库
9、显示当前db状态
db.stats();
2 添加windows系统服务
运行cmd.exe
> cd D:\mongodb\bin
> D:\mongodb\bin>mongod --dbpath "D:\mongodb\data\db" --logpath "D:\mongodb\log\mongo.log" --install --serviceName "MongoDB"
服务名为MongoDB
运行命令成功为如下图:
引时服务已经安装成功,运行
>NET START MongoDB (开启服务)
>NET stop MongoDB (关闭服务)
3 关闭数据库
通过命令关闭,尽量不要直接关闭服务,防止磁盘写入未完成导致数据丢失
>use admin
>db.shutdownServer();
<1> insert 操作
好,数据库有了,下一步就是集合,这里就取集合名为“person”,要注意的就是文档是一个json的扩展(Bson)形式。
<2> find 操作
我们将数据插入后,肯定是要find出来,不然插了也白插,这里要注意两点:
① “_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性。
② 严格的按照Bson的形式书写文档,不过也没关系,错误提示还是很强大的。
<3> update操作
update方法的第一个参数为“查找的条件”,第二个参数为“更新的值”,学过C#,相信还是很好理解的。
<4> remove操作
remove中如果不带参数将删除所有数据,呵呵,很危险的操作,在mongodb中是一个不可撤回的操作,三思而后行。
一: Insert操作
上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我们知道JSON里面Value
可能是“字符串”,可能是“数组”,又有可能是内嵌的一个JSON对象,相同的方式也适合于BSON。
常见的插入操作也就两种形式存在:“单条插入”和“批量插入”。
① 单条插入
先前也说了,mongo命令打开的是一个javascript shell。所以js的语法在这里面都行得通,看起来是不是很牛X。
② 批量插入
这玩意跟“单条插入”的差异相信大家应该知道,由于mongodb中没有提供给shell的“批量插入方法”,没关系,各个语言的driver都打通
了跟mongodb内部的批量插入方法,因为该方法是不可或缺的,如果大家非要模拟下批量插入的话,可以自己写了for循环,里面就是insert。
二:Find操作
日常开发中,我们玩查询,玩的最多的也就是二类:
①: >, >=, <, <=, !=, =。
②:And,OR,In,NotIn
这些操作在mongodb里面都封装好了,下面就一一介绍:
<1>"$gt", "$gte", "$lt", "$lte", "$ne", "没有特殊关键字",这些跟上面是一一对应的,举几个例子。
<2> "无关键字“, "$or", "$in","$nin" 同样我也是举几个例子
<3> 在mongodb中还有一个特殊的匹配,那就是“正则表达式”,这玩意威力很强的。
<4> 有时查询很复杂,很蛋疼,不过没关系,mongodb给我们祭出了大招,它就是$where,为什么这么说,是因为$where中的value
就是我们非常熟悉,非常热爱的js来助我们一马平川。
三:Update操作
更新操作无非也就两种,整体更新和局部更新,使用场合相信大家也清楚。
<1> 整体更新
不知道大家可还记得,我在上一篇使用update的时候,其实那种update是属于整体更新。
<2> 局部更新
有时候我们仅仅需要更新一个字段,而不是整体更新,那么我们该如何做呢?easy的问题,mongodb中已经给我们提供了两个
修改器: $inc 和 $set。
① $inc修改器
$inc也就是increase的缩写,学过sql server 的同学应该很熟悉,比如我们做一个在线用户状态记录,每次修改会在原有的基础上
自增$inc指定的值,如果“文档”中没有此key,则会创建key,下面的例子一看就懂。
② $set修改器
啥也不说了,直接上代码
<3> upsert操作(mysql中replace into和这个一样)
这个可是mongodb创造出来的“词”,大家还记得update方法的第一次参数是“查询条件”吗?,那么这个upsert操作就是说:如果我
没有查到,我就在数据库里面新增一条,其实这样也有好处,就是避免了我在数据库里面判断是update还是add操作,使用起来很简单
将update的第三个参数设为true即可。
<4> 批量更新
在mongodb中如果匹配多条,默认的情况下只更新第一条,那么如果我们有需求必须批量更新,那么在mongodb中实现也是很简单
的,在update的第四个参数中设为true即可。例子就不举了。
今天跟大家分享一下mongodb中比较好玩的知识,主要包括:聚合,游标。
一: 聚合
常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce。
<1> count
count是最简单,最容易,也是最常用的聚合工具,它的使用跟我们C#里面的count使用简直一模一样。
<2> distinct
这个操作相信大家也是非常熟悉的,指定了谁,谁就不能重复,直接上图。
标签:des style blog http color io os 使用 ar
原文地址:http://www.cnblogs.com/youxin/p/4001602.html