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

原文地址:https://www.cnblogs.com/laosun0204/p/11954708.html