一、什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由**键值(key=>value)**对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
二、主要特点
1MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
2可以在MongoDB记录中设置任何属性的索引 (如:FirstName=“Sameer”,Address=“8 Gandhi Road”)来实现更快的排序。
3可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
4如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
5Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
6MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
7Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
8Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
9Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
10GridFS(网格文件系统)是MongoDB中的一个内置功能,可以用于存放大量小文件。能够实现存储单个大文件,或者海量小文件的一个分布式的文件系统,而文件是基于FS接口存储在mongodb中的。
11MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
12MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
13支持地理位置空间索引。敌如数据存储到数据库中,以某点为基准查找周围地理上的位置。
14支持查询性能剖析
三、MongoDB 下载
你可以在mongodb官网下载该安装包,地址为:https://www.mongodb.com/download-center#community
往下翻找到这个内容
四、MongoDB 应用案例
下面列举一些公司MongoDB的实际应用:
1Craiglist上使用MongoDB的存档数十亿条记录。
2 FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。
3 Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
4 bit.ly, 一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
5 spike.com,一个MTV网络的联营公司, spike.com使用MongoDB的。
6 Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
7 sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
8 etsy.com ,一个购买和出售手工制作物品网站,使用MongoDB。
9 纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
10 CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。
以上介绍完MongoDB中的作用下面开始安装MongoDB
环境:ip为192.168.80.100 主机名为mongodb 添加一块网卡
CentOS上安装epel-release的yum源之后就可以安装MongoDB,但是版本都是比较老的,如果使用MongoDB官方的yum就可以安装到比较新版本的MongoDB。
配置MongoDB的yum源:
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
[root@mongodb yum.repos.d]# vi local.repo
安装MongoDB:
yum install -y mongodb-org
注:yum安装会安装以下几个包:
MongoDB官方源中包含以下几个依赖包:
mongodb-org: MongoDB元数据包,安装时自动安装下面四个组件包:
mongodb-org-server: 包含Mongod守护进程和相关的配置文件和init系统服务脚本。
mongodb-org-mongos: 包含mongos的守护进程。
mongodb-org-shell: 包含mongo shell。
mongodb-org-tools: 包含MongoDB的管理工具: mongoimport, bsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop。
修改mongodb的配置文件
vi /etc/mongod.conf
bind_Ip=0.0.0.0 设置监听端口,方便连接
systemctl start mongod
//开启mongodb服务第一种开启方法
netstat -anpt | grep mongod
//查看mongodb的监听端口
pkill -9 mongod
//杀死mongod服务
mongod -f /etc/mongod.conf //第二种启动方式
netstat -anpt | grep mongod
//查看mongodb的监听端口
ps aux | grep mongod.conf
//查看mongodb进程状况
进入mongo数据库中
mongo
//进入数据库
mongo --port 27017
//以端口形式进入
以上是yum安装mongodb完成
MongoDB数据操作语句
一、mongodb数据库操作
1、创建数据库
use 数据库名称
注:如果数据库不存在,则创建数据库,否则切换到指定数据库。
2、查看所有数据库
show dbs
刚创建的数据库 runoob 并不在数据库的列表中, 要想显示它,我们需要向 runoob 数据库插入一些数据。
db.runoob.insert({“name”:“云计算”})
show dbs
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
3、删除数据库
db.dropDatabase()
删除当前数据库,默认为 test,可以使用 db 命令查看当前数据库名。
注:只会删除show dbs显示的数据库,而且要进入到数据库中,再执行删除命令
二、mongodb集合操作
db.createCollection("name", { //集合的名字
capped: <Boolean>, //是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义
autoIndexId: <Boolean>, //是否使用_id作为索引,默认为使用(true或false)
size: <number>, //限制集合使用空间的大小,默认为没有限制,size的优先级比max要高
max <number>} //集合中最大条数限制,默认为没有限制
)
创建集合例子:
创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。
db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
db.c02.insert({"name":"zhangsan","age":20})
db.c02.find() //查找一个集合里面的所有内容
2、查看已有集合
show collections
3、删除集合
db.集合名称.drop()
4、更新文档
"db.集合名称.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)"
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如
,
,
,inc…)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
$set既能添加也能更新
$inc只能更新
实例:通过 update() 方法来更新标题(title):
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
只更新第一条记录:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
添加一些内容
这里不能插入多个数据只能一个一个的后面的4,5按照上面的目录添加
db.c02.find().pretty()
db.c02.update({"name":"zhangsan"},{$set:{"age":6}})
db.c02.find().pretty()
将age为6的对应的名字改为lisi
db.c02.update({"age":6},{$set:{"name":"lisi"}})
db.c02.find().pretty()
将姓名为张三的age全部改为20
db.c02.update({"name":"zhangsan"},{$set:{"age":20}},false,true)
db.c02.find().pretty()
如果多条相同数据,只想删除第一条找到的记录可以设置 justOne 为 1:
db.集合名称.remove(查询条件,1)