MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
面向集合存储,易存储对象类型的数据。
模式自由,支持动态查询,支持完全索引,包含内部对象。支持查询。支持复制和故障恢复。使用高效的二进制数据存储,包括大型对象(如视频等)。自动处理碎片,以支持云计算层次的扩展性。支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。文件存储格式为BSON(一种JSON的扩展)。可通过网络访问。
具体介绍可以查看百度百科:
http://baike.baidu.com/subview/3385614/9338179.htm#viewPageContent
(1)安装:下载地址:https://www.mongodb.org/downloads,下载适合自己的开发环境的压缩包,加压后直接安装就可以了,很简单;
(2)创建仓库、日志、新建服务:在安装目录下创建两个文件夹db、log;在cmd中输入以下命令创建仓库、日志、新建服务:
mongod -dbpath “D:\study soft\MongoDB\db” -logpath “D:\study soft\MongoDB\log\mongodb.log” -install -serviceName “MongoDB”
(3)使用mongoVUE工具:
下载安装(不做介绍了)后,要创建连接,一般只需要写Name(连接名)和Server(地址:localhost或127.0.0.1)就好了:
创建好后如图:
(4)基本命令:
—–创建集合:
db.createCollection(“集合名”);
—– 删除集合:
db.集合名.drop();
—– 切换集合:
use 集合名;
—– 添加记录:
db.集合名.insert({“_id”:1001,”name”:”yyy”,”sex”:”F”});
—–向集合中添加多条记录
db.集合名.insert([{“_id”:1003,”name”:”天ss天”,”sex”:”男”},{“_id”:1004,”name”:”tt”,”sex”:”男”}]);
—– 查看集合中的数据:
db.集合名.find()
db.集合名.findOne()
db.集合名.find({"_id":1001}) ---where key=val
db.集合名.find({"_id":{"gt":1001}}) ---where key>val
db.集合名.find({"_id":{"$lte":1001}}) ---where key<=val
db.集合名.find({"_id":{"$ne":1001}}) ---where key!=val
—- $in 在…..中
db.集合名 .find({"_id":{"$in":[1001,1002,1003]}})
—- $or 或
db.集合名.find({"$or":[{"_id":1001},{"name":"haha"}]})
—-$and and or 并且….或…..(性别为男 并且 id为1009 或者姓名为 yc)
db.zy.find({"sex":"男","$or":[{"_id":1009},{"name":"yc"}]})
—– 如果存在则修改,不存在则添加
db.集合名.save({“_id”:1003,”name”:”haha”});
—– 修改
db.集合名.update({条件},{要修改的数据});
—— 修改器
$inc 增加对应的值
db.zy.insert({"_id":1004,"url":"www.baidu.com","pageViews":1});
db.zy.update({"_id":1004},{"$inc":{"pageViews":1}}); --将id为1004的文档中的pageViews键的值增加1
$set 修改对应的值
db.zy.update({"_id":1002},{"name":"明明","sex":"女"})
db.zy.update({"_id":1002},{"$set":{"name":"明明","sex":"男"}})
—- 将company变成一个数组
db.zy.insert({"_id":1005,"company":"yc","url":"www.baidu.com","pageViews":1});
db.zy.update({"_id":1005},{"$set":{"company":["yc","zy","nh"]}})
—删除键:
db.zy.update({"_id":1005},{"$unset":{"company":1}})
—数组修改器:
$push 向数组中添加值,可能会出现重复的值
db.zy.update({"_id":1005},{"$push":{"company":"hhh"}})
$each 循环添加
db.zy.update({"_id":1005},{"$push":{"company":{"$each":["aa","bb","cc"]}}})
$slice 指定最大的长度,它的值必须是负数,表示保留最后的n个值
db.zy.update({"_id":1005},{"$push":{"company":{"$each":["aa1","bb2","cc3"],"$slice":-10}}})
$pop 从数组中删除一个元素 key : 1 从数据末尾开始删 key : -1 从头部开始删
db.zy.update({"_id":1005},{"$pop":{"company":1}})
$pull 从数组中删除匹配的值
db.zy.update({"_id":1005},{"$pull":{"company":"nh"}})
—-循环
for( i=0;i<10;i++){
db.zy.insert({"_id":i,"name":i})
}
注:当不插入_id时,mongodb会自动分配一个ObjectId
—-游标
var cursor =db.zy.find();
var obj;
while(cursor .hasNext()){
obj=cursor.next();
print(obj);
};
var cursor =db.zy.find();
cursor .forEach(function(x){
print(x);
})
–分页查询
db.zy.find().limit(3); ---查前3条
db.zy.find().limit(3).skip(3); ---跳过前3条,查后面的3条
–排序
db.zy.find().sort({"_id":-1}) --- 1为升序 -1 为降序
db.zy.find().sort({"_id":-1,"name":1}) ---第一个相同就按第二个排序
eg:
db.zy.insert({
"_id":1006,
"content":"今天天气怎么样??",
"comments":[
{"comment":"好","count":0},
{"comment":"很好","count":0},
{"comment":"非常好","count":0},
]
})
—-通过数组下标访问
db.zy.update({"_id":1006},{"$inc":{"comments.1.count":1}})
db.zy.update({"comments.comment":"很好"},{"$inc":{"comments.$.count":1}}) ----匹配所有的“很好”,让其对应的count+1
db.zy.update({"comments.comment":"非常好"},{"$set":{"comments.$.comment":"超级好"}}) ----匹配所有的“非常好”,让其对应的值变为超级好
—-MongoDB默认每次修改只修改一个文档,如果需要改多条满足的记录,需要在后面添加条件{multi:true}
db.zy.update({"comments.comment":"很好"},{"$inc":{"comments.$.count":1}},{multi:true})
db.zy.update({"comments.comment":"很好"},{"$inc":{"comments.$.count":1}},false,true)
(5).数据类型:
null:{“x”:null}
boolean: {“x”:true}
数值: {“x”:3.14} {“x”:3} NumberInt(“3”) NumberLong(“3”)
字符串:{“x”:”hello”}
日期:{“x”:new Date()}
正则表达式:{“x”:/hello/ig}
数组:{“x”:[1,2,3]}
内嵌文档:{“x”:{“foo”:{bar}}}
对象id: {“x”:ObjectId()}
代码:{“x”:function(){} }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zh_yy9/article/details/48067105