Skip to content

Commit f56c3b8

Browse files
committed
2017-03-01补充mongodb
1 parent cbb24d3 commit f56c3b8

File tree

2 files changed

+184
-0
lines changed

2 files changed

+184
-0
lines changed

MongoDB-Install-And-Settings.md

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
## MongoDB 安装和配置
2+
3+
4+
## 基础概念
5+
6+
MongoDB 元素概念
7+
- databases: 数据库;
8+
- collections:表;(colloections组成了databases)
9+
- documents:行;(documents组成了collections)
10+
- MongoDB 没有新建数据库的命令,只要进行 insert 或其它操作,MongoDB 就会自动帮你建立数据库和 collection。当查询一个不存在的 collection 时也不会出错,MongoDB 会认为那是一个空的 collection。
11+
- 一个对象被插入到数据库中时,如果它没有 ID,会自动生成一个 "_id" 字段,为 12 字节(24位)16进制数。
12+
- 当然如果插入文档不带 _id,则系统会帮你自动创建一个,如果自己指定了就用自己指定的。
13+
14+
15+
16+
## 安装环境
17+
18+
- CentOS 6
19+
20+
## MongoDB 安装
21+
22+
- 关闭 SELinux
23+
- 编辑配置文件:`vim /etc/selinux/config`
24+
- 把 `SELINUX=enforcing` 改为 `SELINUX=disabled`
25+
- MongoDB 安装
26+
- 官网:<https://www.mongodb.com>
27+
- 官网文档:<https://docs.mongodb.com/manual/reference/method/>
28+
- 此时(20170228) 最新稳定版本为:**3.4.2**
29+
- 官网下载:<https://www.mongodb.com/download-center?jmp=nav#community>
30+
- 官网安装方法介绍:<https://docs.mongodb.com/master/tutorial/install-mongodb-on-red-hat/>
31+
- 官网使用的 Package 的安装方式,还有下载 tar 包的方法,如果需要 tar 包方式可以看这篇文章:<https://itjh.net/2016/07/11/centos-install-mongodb/>
32+
- 我这里使用官网的方式:
33+
- 新建文件:`vim /etc/yum.repos.d/mongodb-org-3.4.repo`,文件内容如下:
34+
35+
``` bash
36+
[mongodb-org-3.4]
37+
name=MongoDB Repository
38+
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
39+
gpgcheck=1
40+
enabled=1
41+
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
42+
```
43+
- 如果你要安装 2.6 的版本,可以使用下面这个内容:
44+
45+
``` bash
46+
[mongodb-org-2.6]
47+
name=MongoDB 2.6 Repository
48+
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
49+
gpgcheck=0
50+
enabled=1
51+
```
52+
- 上面文件新建好之后,输入安装命令:`yum install -y mongodb-org`,一共有 5 个包,加起来有 100M 左右,国内下载速度不快,需要等等,可能还会出错,如果出错用国内源:<https://mirror.tuna.tsinghua.edu.cn/help/mongodb/>
53+
- 开放防火墙端口:
54+
- `iptables -A INPUT -p tcp -m tcp --dport 27017 -j ACCEPT`
55+
- `service iptables save`
56+
- `service iptables restart`
57+
- 其他常用命令:
58+
- 检查版本:`mongod --version`
59+
- 启动:`service mongod start`
60+
- 停止:`service mongod stop`
61+
- 重启:`service mongod restart`
62+
- 添加自启动:`chkconfig mongod on`
63+
- 进入客户端:`mongo`,如果有授权用户格式为:`mongo 127.0.0.1:27017/admin -u 用户名 -p 用户密码`
64+
- 卸载命令:`yum erase $(rpm -qa | grep mongodb-org)`
65+
- 删除数据库:`rm -r /var/lib/mongo`
66+
- 删除 log:`rm -r /var/log/mongodb`
67+
68+
## 添加授权用户
69+
70+
- 先进入 mongo 客户端 :`mongo`
71+
- 输入:`use admin`,然后输入:
72+
73+
``` bash
74+
db.createUser(
75+
{
76+
user: "gitnavi",
77+
pwd: "123456",
78+
roles: [ { "role" : "dbAdmin", "db" : "youmeek_nav" } ]
79+
}
80+
)
81+
```
82+
83+
- 修改密码:`db.changeUserPassword(用户名, 密码)`
84+
- 删除用户:` db.removeUser(用户名)`
85+
- 内置角色:
86+
- Read:允许用户读取指定数据库
87+
- readWrite:允许用户读写指定数据库
88+
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
89+
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
90+
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
91+
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
92+
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
93+
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
94+
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
95+
- root:只在admin数据库中可用。超级账号,超级权限
96+
97+
## MongoDB 配置
98+
99+
- 编辑配置文件:`vim /etc/mongod.conf`,注意:编辑完记得重启 MongoDB 服务
100+
- 默认的数据库目录:`/var/lib/mongo`
101+
- 默认的日志目录:`/var/log/mongodb`
102+
- 默认的配置文件内容:
103+
104+
``` ini
105+
bindIp:127.0.0.1 #注释此行,表示除了本机也可以登陆
106+
107+
# 补充这个,表示必须使用带用户名密码的才能请求 mongodb,比如访问 admin 数据库:mongo 192.168.1.121:27017/admin -u 用户名 -p 用户密码
108+
security:
109+
authorization: enabled
110+
```
111+
112+
## 常用命令
113+
114+
- `show dbs`,查看已有数据库
115+
- `use 数据库名`,进入指定数据库,如果这个数据库不存在了也是可以进入的,进入之后 insert 一条语句就会自动创建了。
116+
- `db`,显示当前用的数据库
117+
- `show collections`,列出当前数据库的collections(当前数据库下的表)
118+
- `show tables`,查看数据库中的集
119+
- `exit`,退出
120+
- `show users`,查看当前库下的用户
121+
- `db.system.users.find().pretty()`,查看所有用户
122+
- `db.dropAllUsers()`,删除所有用户
123+
- `db.dropDatebase()`,删除当前这个数据库
124+
- `db.集名称.find()`,查看集中的所有数据,等同于:select * from 表名称
125+
- `db.集名称.findOne()`,查看集中的一条数据,等同于:select * from 表名称 limit 0,1
126+
- `db.集名称.find().limit(10)`,查看集中的一条数据
127+
- `db.集名称.find().sort({name:1})`,查询列表,根据字段name排序 #1正序 -1倒序
128+
- `db.集名称.find().sort({x:1}).skip(5).limit(10)`,查询列表,根据字段name排序,等同于 select from foo order by x asc limit 5, 10
129+
- `db.集名称.find({x:10})`,查询列表,等同于 select from foo where x = 10
130+
- `db.集名称.find({x: {$lt:10}})`,select from foo where x <= 10
131+
- `db.集名称.find({}, {y:true})`,select y from foo
132+
- `db.集名称.find({"address.city":"gz"})`,搜索嵌套文档address中city值为gz的记录
133+
- `db.集名称.find({likes:"math"})`,搜索数组
134+
- `db.集名称.insert({"a":1,"b":2})`,插入一个测试数据
135+
- `db.集名称.find({name:"lichuang"})`,根据索引或字段查找数据
136+
- `db.集名称.update({name:"张三"},{$set:{name:"李四"}})`,更新数据,等同于:UPDATE 表名 SET name='李四' WHERE name = '张三'
137+
- `db.集名称.update({name:"张三"},{$set:{name:"李四"},{upsert:true},{multi:true}})`,更新数据,等同于:UPDATE 表名 SET name='李四' WHERE name = '张三'。其中特殊的是 upsert 为 true 的时候,表示如果没有这条数据,则创建一条。multi 表示,所有满足条件的都进行更新,不然默认只找到的第一条更新。
138+
- `db.集名称.remove({name:"lichuang"})`,删除数据,等同于:DELETE FROM 表名 WHERE name='lichuang'
139+
- `db.集名称.drop()`,删除这个集合
140+
- `db.集名称.getIndexes()`,查看集合索引
141+
- `db.集名称.dropIndex("name_1")`,删除索引
142+
- `db.集名称.ensureIndex({title:1})`,创建索引
143+
- `db.集名称.ensureIndex({titile:1},{name:"indexname"})`,创建索引,第二个属性设置索引名称
144+
- `db.集名称.ensureIndex({titile:1},{unique:true/false})`,创建唯一索引,第二个属性设置为true说明该字段中值不能重复,false可以重复
145+
- `db.集名称.ensureIndex({name:1,age:1})`,复合索引
146+
- `db.集名称.ensureIndex({"address.city":1})`,在嵌套文档的字段上建索引
147+
- `db.集名称.insert({"article","text"})`,全文索引,指定为text类型,每个数据集合中只允许创建一个全文索引
148+
- `db.adminCommand( {setParameter:1, textSearchEnabled:true})`,开启全文本索引功能
149+
- 一些符号说明:
150+
151+
``` ini
152+
$lt ->less then 小于
153+
$lte ->less than and equal 不大于
154+
$lt ->less then 小于
155+
$gt ->greater then 大于
156+
$gte ->greater then and equal 不小于)
157+
$ne ->not equal 不等于
158+
```
159+
160+
- 其他材料:
161+
- <https://segmentfault.com/a/1190000007550421>
162+
- <https://segmentfault.com/a/1190000005095959>
163+
- <http://blog.csdn.net/endlu/article/details/51098518>
164+
- <http://www.cnblogs.com/shaosks/p/5666764.html>
165+
- <http://www.cookqq.com/blog/51277786-c26c-4f94-9be2-428f3633d9e5>
166+
- <http://www.thinksaas.cn/topics/0/513/513705.html>
167+
- <https://www.fedte.cc/p/511.html>
168+
169+
170+
## Java 包
171+
172+
- spring-data-mongodb:<http://projects.spring.io/spring-data-mongodb/>
173+
- mongo-java-driver:<https://github.com/mongodb/mongo-java-driver>
174+
175+
176+
## GUI 管理工具
177+
178+
- Robomongo:<https://robomongo.org/>
179+
180+
## 资料
181+
182+
- <http://www.cnblogs.com/zhoujinyi/p/4610050.html>
183+
- <http://lvtraveler.github.io/2016/05/22/%E3%80%90MongoDB%E3%80%91MongoDB%E5%85%A5%E9%97%A8%EF%BC%88%E4%B8%80%EF%BC%89%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/>

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
- [MySQL 测试](Mysql-Test.md)
4949
- [MySQL 教程](Mysql-Tutorial.md)
5050
- [Redis 安装和配置](Redis-Install-And-Settings.md)
51+
- [MongoDB 安装和配置](MongoDB-Install-And-Settings.md)
5152
- [Solr 安装和配置](Solr-Install-And-Settings.md)
5253
- [Jira 安装和配置](Jira-Install-And-Settings.md)
5354
- [Jenkins 安装和配置](Jenkins-Install-And-Settings.md)

0 commit comments

Comments
 (0)