MongoDB的搭建、参数
Mongodb官网:https://www.mongodb.com/
mkdir -r /data/db
touch /data/log
tar -zxvf mongodb-linux-x86_64-rhel70-3.6.0.tgz
mv mongodb-linux-x86_64-rhel70-3.6.0/ mongodb-3.6.0
cd mongodb-3.6.0
配置文件方式启动mongo
创建配置文件
vi mongodb.conf
输入以下内容:
dbpath=/data/db/
logpath=/data/log
logappend=true
fork=true
port=27017
bind_ip=127.0.0.1,192.168.3.12
启动
./mongod -f ./mongodb.conf
不创建配置文件通过mongod参数启动也可以
./mongod –dbpath /data/db/ -logpath /data/db/log -logappend -fork –port 27017
开通防火墙
firewall-cmd --zone=public --add-port=27017/tcp --permanent
systemctl restart firewalld.service
那么如何正常关闭mongodb?先通过shell连上服务器:
mongo
use admin
db.shutdownServer()
或者直接kill -15 <pid>,注意kill -9 可能会导致数据文件损坏
参数说明(参考使用)
--quiet # 安静输出
--port arg # 指定服务端口号,默认端口27017
--bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
--logpath arg # 指定MongoDB日志文件,注意是指定文件不是目录
--logappend # 使用追加的方式写日志
--pidfilepath arg # PID File 的完整路径,如果没有设置,则没有PID文件
--keyFile arg # 集群的私钥的完整路径,只对于Replica Set 架构有效
--unixSocketPrefix arg # UNIX域套接字替代目录,(默认为 /tmp)
--fork # 以守护进程的方式运行MongoDB,创建服务器进程
--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数据保存
基本操作:
use DATABASE_NAME 命令来创建数据库,存在就打开 不存在就创建
示例:use test
show dbs 检查数据库列表(没有数据的显示不出来)
db 检查当前选择的数据库
db.COLLECTION_NAME.insert(document)插入一个文档,可以用数组插入多条文档,在 MongoDB 中,不需要创建集合。当插入一些文档时,MongoDB 会自动创建集合(相当于表)。
示例:db.items.insert({"name":"yiibai tutorials"})
db.items.insert([{"name":"xu"},{"name":"luo"},{"name":"chen"}])
db.dropDatabase() 命令用于删除现有的数据库
show collections 用于从数据库中查询集合
db.COLLECTION_NAME.drop() 用于从数据库中删除集合
示例:db.items.drop()
db.COLLECTION_NAME.find(document) 从MongoDB集合查询数据,除了find()方法外,还有一个findOne()方法,它只返回一个文档。
示例:db.items.find()
db.COLLECTION_NAME.find(document).pretty() 以格式化的方式显示结果
示例:db.items.find().pretty()
MongoDB 与 RDBMS的等效 Where 子句
要在一些条件的基础上查询文档,可以使用以下操作。
操作 语法 示例 RDBMS等效语句
相等 {<key>:<value>} db.mycol.find({"by":"yiibai"}).pretty() where by = 'yiibai'
小于 {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
小于等于 {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
大于等于 {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50
MongoDB中的AND操作符
语法
在find()方法中,如果通过使用’,‘将它们分开传递多个键,则 MongoDB 将其视为AND条件。 以下是AND的基本语法 -
>db.mycol.find({$and:[{key1: value1}, {key2:value2}]}).pretty()
也可以:
>db.mycol.find({key1: value1, key2:value2}).pretty()
示例
> db.mycol.find({$and:[{"by":"yiibai tutorials"},{"title": "MongoDB Overview"}]}).pretty()
{
"_id" : 100,
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "yiibai tutorials",
"url" : "http://www.yiibai.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
对于上面给出的例子,等效的SQL where子句是 -
SELECT * FROM mycol where by ='yiibai tutorials' AND title ='MongoDB Overview'
SQL
可以在find子句中传递任意数量的键值。
MongoDB中的OR操作符
语法
在要根据OR条件查询文档,需要使用$or关键字。 以下是OR条件的基本语法 -
>db.mycol.find({$or: [{key1: value1}, {key2:value2}]}).pretty()
示例
>db.mycol.find({$or:[{"by":"yiibai tutorials"},{"title": "MongoDB Overview"}]}).pretty()
{
"_id": 100,
"title": "MongoDB Overview",
"description": "MongoDB is no sql database",
"by": "yiibai tutorials",
"url": "http://www.yiibai.com",
"tags": ["mongodb", "database", "NoSQL"],
"likes": "100"
}
Find()默认将显示文档的所有字段。为了限制显示的字段,需要将字段列表对应的值设置为1或0。1用于显示字段,而0用于隐藏字段。
>db.COLLECTION_NAME.find({},{KEY:1})
示例:
db.mycol.find({},” title”:1,” description”:1})
limit()方法的基本语法如下: 该方法接受一个数字类型参数,它是要显示的文档数。
> db.COLLECTION_NAME.find().limit(NUMBER)
sort()方法的基本语法如下,该方法接受包含字段列表及其排序顺序的文档。使用指定排序顺序1和-1。 1用于升序,而-1用于降序。
>db.COLLECTION_NAME.find().sort({KEY:1})
update()方法更新现有文档中的值。
语法
update()方法的基本语法如下 -
> db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
save()方法 使用save()方法中传递的文档数据替换现有文档。
语法
MongoDB save()方法的基本语法如下所示:
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
remove()方法
MongoDB中的 remove()方法用于从集合中删除文档。 remove()方法接受两个参数。 一个是删除条件,第二个是标志:justOne。
criteria - (可选)符合删除条件的集合将被删除。
justOne - (可选)如果设置为true或1,则只删除一个文档。
语法
remove()方法的基本语法如下 -
>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA,1)
ensureIndex()创建索引 方法的基本语法如下
>db.COLLECTION_NAME.ensureIndex({KEY:1})
这里的key是要在其上创建索引的字段的名称,1是升序。 要按降序创建索引,需要使用-1。
示例
>db.mycol.ensureIndex({"title":1})
在ensureIndex()方法中,可以传递多个字段,以在多个字段上创建索引。
>db.mycol.ensureIndex({"title":1,"description":-1})
ensureIndex()方法也接受选项列表(可选)。 以下是列表 -
参数 |
类型 |
描述 |
background |
Boolean |
在后台构建索引,以便构建索引不会阻止其他数据库活动,则指定background的值为true。默认值为false。 |
unique |
Boolean |
创建一个唯一的索引,使得集合不会接受索引键或键匹配索引中现有值的文档的插入。 指定true以创建唯一索引。 默认值为false。 |
name |
String |
索引的名称。如果未指定,则MongoDB通过连接索引字段的名称和排序顺序来生成索引名称。 |
dropDups |
Boolean |
在可能有重复项的字段上创建唯一索引。MongoDB仅索引第一次出现的键,并从集合中删除包含该键的后续出现的所有文档。指定true以创建唯一索引。 默认值为false。 |
sparse |
Boolean |
如果为true,则索引仅引用具有指定字段的文档。这些索引在某些情况下(特别是排序)使用的空间较小,但行为不同。默认值为false。 |
expireAfterSeconds |
integer |
指定一个值(以秒为单位)作为TTL,以控制MongoDB在此集合中保留文档的时间。 |
v |
索引版本 |
索引版本号。默认索引版本取决于创建索引时运行的MongoDB的版本。 |
weights |
文档 |
权重是从1到99999之间的数字,并且表示该字段相对于其他索引字段在分数方面的意义。 |
default_language |
String |
对于文本索引,确定停止词列表的语言以及句柄和分词器的规则。 默认值为英文。 |
language_override |
String |
对于文本索引,要指定文档中包含覆盖默认语言的字段名称。默认值为language。 |
MongoDB的搭建、参数的更多相关文章
- Mongodb - 切片搭建
0.概述 mongodb分片搭建,版本号4.0.2,以下除了创建opt文件夹以外,所有操作均在mongodb用户下面执行 准备三台机器:192.168.56.81192.168.56.82192.16 ...
- mongodb主从搭建
#tigergao 官网进行下包,可以下载源码包或者二进制包,本次下载的为二进制包,进行试验. 主服务器搭建: mkdir mongomaster cp mongodb-linux-x86_64-rh ...
- MongoDB环境搭建
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...
- NoSql数据库初探-mongoDB环境搭建
NoSQL数据库一改关系型数据库的缺点,更容易的集成.分布式.无模式.故障恢复等特点,正在一步步餐食关系型数据库的市场,作为一个与时俱进的码农了解一下新技术是必须的,尤其是在读了<NoSql精粹 ...
- Windows下MongoDB环境搭建
MongoDB下载 登录MongoDB官网:www.mongodb.org:点击[Download MongoDB]按钮,进入如下所示界面 选择目标操作系统及其版本,比如这里选择的是64位的Windo ...
- 《OD大数据实战》MongoDB环境搭建
一.MongonDB环境搭建 1. 下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 2. 解压 tar -zxvf ...
- 【MongoDB】MongoDB服务器搭建(Unix/Linux)
1.安装MongboDB安装包(开源免费的哟) 在Mac 下 brew install mongoDB 就可以啦 安装要等一会儿,大概200M 2. cd到MongboDB文件夹 - 如果是用home ...
- Mongodb Java Driver 参数配置解析
要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大. connectionsPerHost:与目标数据库能够建立的最大conn ...
- [MongoDB] - mongod.exe参数详解
mongod.exe是启动mongodb的命令,我们可以通过mongod --help来查看帮助文档.下面是各个参数的对应中文解释.<基于Mongo3.0.5> 通用参数选项 -h/--h ...
随机推荐
- uni-app 安卓离线打包详细教程
借鉴 uni-app官方给出的文章http://ask.dcloud.net.cn/article/508(虽说是04年的) 预备环境 AndroidStudio开发环境,要求安装Android4.0 ...
- cf20B Equation(认真仔细题)
题意: 求AX^2+BX+C=0的根 思路: 考虑到A,B,C所有可能的情况 代码: double a,b,c; int main(){ cin>>a>>b>>c; ...
- x64 InlineHook 黑魔法
目录 x64 InlineHook 黑魔法 为什么不能用X86 的HOOK方式? 原理:jmp + rip 进行寻址6字节方式跳转 手动InlineHook 临时地址x(找一块空内存) 计算偏移 源地 ...
- httprunner3源码解读(1)简单介绍源码模块内容
前言 最近想着搭建一个API测试平台,基础的注册登录功能已经完成,就差测试框架的选型,最后还是选择了httprunner,github上已经有很多开源的httprunner测试平台,但是看了下都是基于 ...
- 如何在SimpleNVR用Excel表格将通道配置简单化
进入本世纪的第三个十年,流媒体们"绞尽脑汁",依靠技术不断提升用户的体验感.熟悉SimpleNVR的用户都知道,目前SimpleNVR已实现对接自有流媒体服务器平台,不限制观看人数 ...
- Jmeter分布式 (三)
一.什么是分布式测试 分布式测试是指通过局域网和Internet,把分布于不同地点.独立完成特定功能的测试计算机连接起来,以达到测试资源共享.分散操作.集中管理.协同工作.负载均衡.测试过程监控等目的 ...
- 使用BadBoy录制JMeter脚本
BadBoy简介 BadBoy是一款免费WEB自动化测试工具,其实就是一个浏览器模拟工具,具有录制和回放功能,支持对录制出来的脚本进行调试.同时支持捕获表单数据的功能,所以能够进行自动化测试.但目前 ...
- 南京大学OS笔记(1)-应用眼中的操作系统
南京大学OS笔记(1)-应用眼中的操作系统 早就想刷一刷南大JYY老师的os课.之前稍微看过几节,果然讲的风趣幽默,而且现场写代码展示水平确实很高,这次准备认真刷一刷然后好好记一下笔记.当然lab就不 ...
- [第三章]c++学习笔记1(this指针)
this指针作用,其作用就是指向成员函数所作用的对象 使用例 为了返回c1,使用this指针,来指向作用的对象 使用空指针调用hello,调用hello欲使其作用在p指向的对象上,然而p没指向任何对象 ...
- Chrome handless无界面浏览器的脚本操作
1.什么是Phantomjs (已经停止更新) 是一个无界面的浏览器 支持页面元素查找,js的执行等 由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多 2.如何使用Phantomjs? ...