mongodb
MongoDB 基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案,它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象,字段值可以包含其他文档,数组及文档数组
1、安装MongoDB
我们日常使用更多是使用linux的服务器,所以接下来让我们看一下linux安装MongoDB的方法
# 下载MongoDB
在浏览器里输入https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz直接下载然后上传到虚拟机上
# 解压 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
# 将mongodb-linux-x86_64-3.0.6重命名为mongodb
# 将mongodb移动到指定目录mv mongodb/ /usr/local/
2、启动MongoDB
启动MongoDB之前需要先创建一个文件存储目录,默认会去使用/data/db这个目录,mkdir /data/db,创建好存储目录,使用mongod来启动MongoDB,如果指定的目录不是/data/db这个目录,则需要使用-dbpath 来声明目录位置,mongod -dbpath=/opt/data/,使用上面的命令以后我们会发现,我们的MongoDB确实是启动了,但是只是在前台启动,我们要做什么操作都会使它停掉,所以我们就需要使用-fork或者nohup来让MongDB进入到后台运行,在使用nohup或者-fork启动MongoDB的时候需要先指定log文件的路径,注意这里需要指定到具体的log文件名,而不是目录,创建数据库文件夹与日志文件的命令是:
mkdir /usr/local/mongodb/data
touch /usr/local/mongodb/logs
日志的路径我们已经创建好了,接下来让我们启动MongoDB服务吧,启动命令是在bin目录下执行./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork ,这个是不需要密码的,如果想使用密码,要加上--auth,启动成功会出现下面红框里的提示,如下图:

可以看到mongodb启动成功,./mongod --help,可以看到mongodb的主要参数有:
************************************* 基本配置*********************************************
| --quiet | # 安静输出 |
| --port arg | # 指定服务端口号,默认端口27017 |
| --bind_ip arg | # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP |
| --logpath arg | # 日志文件路径 |
| --logappend | # 使用追加的方式写日志 |
| --pidfilepath arg | # PID File 的完整路径,如果没有设置,则没有PID文件 |
| --keyFile arg | # 集群的私钥的完整路径,只对于Replica Set 架构有效 |
| --unixSocketPrefix arg | # UNIX域套接字替代目录,(默认为 /tmp) |
| --fork | # 在后台运行 |
| --auth | # 是否需要验证权限登录(用户名和密码) |
| --cpu | # 定期显示CPU的CPU利用率和iowait |
| --dbpath arg | # 指定数据库路径 |
| --diaglog arg | # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads |
| --directoryperdb | # 设置每个数据库将被保存在一个单独的目录 |
| --journal | # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里 |
| --journalOptions arg | # 启用日志诊断选项 |
| --ipv6 | # 启用IPv6选项 |
| --jsonp | # 允许JSONP形式通过HTTP访问(有安全影响) |
| --maxConns arg | # 最大同时连接数 默认2000 |
| --noauth | # 不启用验证 |
| --nohttpinterface | # 关闭http接口,默认关闭27018端口访问 |
| --noprealloc | # 禁用数据文件预分配(往往影响性能) |
| --noscripting | # 禁用脚本引擎 |
| --notablescan | # 不允许表扫描 |
| --nounixsocket | # 禁用Unix套接字监听 |
| --nssize arg (=16) | # 设置信数据库.ns文件大小(MB) |
| --objcheck | # 在收到客户数据,检查的有效性, |
| --profile arg | # 档案参数 0=off 1=slow, 2=all |
| --quota | # 限制每个数据库的文件数,设置默认为8 |
| --quotaFiles arg | # number of files allower per db, requires –quota |
| --rest | # 开启简单的rest API |
| --repair | # 修复所有数据库run repair on all dbs |
| --repairpath arg | # 修复库生成的文件的目录,默认为目录名称dbpath |
| --slowms arg (=100) | # value of slow for profile and console log |
| --smallfiles | # 使用较小的默认文件 |
| --syncdelay arg (=60) | # 数据写入磁盘的时间秒数(0=never,不推荐) |
| --sysinfo | # 打印一些诊断系统信息 |
| --upgrade | # 如果需要升级数据库 |
********************************Replicaton**************************************************
| --fastsync | # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步 |
| --autoresync | # 如果从库与主库同步数据差得多,自动重新同步, |
| --oplogSize arg | # 设置oplog的大小(MB) |
********************************主/从参数****************************************************
| --master | # 主库模式 |
| --slave | # 从库模式 |
| --source arg | # 从库 端口号 |
| --only arg | # 指定单一的数据库复制 |
| --slavedelay arg | # 设置从库同步主库的延迟时间 |
*********************************Replica set(副本集)选项************************************
|
--replSet arg |
# 设置副本集名称 |
********************************Sharding(分片)选项******************************************
| --configsvr | # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb |
| --shardsvr | # 声明这是一个集群的分片,默认端口27018 |
| --noMoveParanoia | # 关闭偏执为moveChunk数据保存 |
3、连接MongoDB
前面我们启动了MongoDB,接下来让我们尝试一下连接MongoDB,连接MongoDB使用bin目录下的mongo工具

通过shell连接MongoDB服务:

4、使用工具连接MongDB
下载NoSQL Manager for MongoDB这个客户端,双击
就可以安装,直接输入虚拟机ip就行,别的不用管,通过shell连接 MongoDB 服务:

第一步右键Collections,选择Create new collection,弹出的对话框里输入一个集合的名字,点击OK,然后右键besttest,选择Shell
增

可以多次运行,生成的id是自增的

查
db.besttest.find();查找全部的

db.besttest.find().pretty();格式化输出

db.besttest.find({'age':27}).pretty();精确查询

db.besttest.find({'age':{$lte:18}}).pretty();小于等于18查询
改
db.besttest.update({'age':27},{$set:{'age':25}});如果有多条27岁的只能修改一条
db.besttest.update({'age':18},{$set:{'age':40}},{multi:true});全部修改为40岁
db.besttest.save();怕修改失败save一下
db.besttest.find({'age':25}).pretty();改完查询一下
删
首先查看所有数据库:

接下来我们切换到数据库ssj:

执行删除命令:

在查看所有数据库,ssj的数据库没有了:

db.besttest.remove({'age':40});删除所有年龄是40岁的
5、MongoDB常用命令
# 查看数据库

# 现在我们创建一个新库


这时使用show dbs查询时发现我们新建的库没有查询出来,这是为什么呢?让我们先来写一些数据进去

这样就可以看到我们刚刚创建的库了,另外需要注意的一点是MongoDB中默认的数据库为test,如果你没有创建新的数据库,集合将存放在test 数据库中,回到NoSQL Manager for MongoDB中刷新Databases可以看到刚创建的数据库ssj
浙公网安备 33010602011771号