一个计算机技术爱好者与学习者

0%

MongoDB入门篇

1. MongoDB简介

MongoDB 是一个文档数据库,旨在简化应用程序开发和扩展。

mongodb采用文档式存储结构,存储结构分为四个层次:键值对、文档、集合、数据库。
文档数据库存储结构的基本单位是键值对,具体包含数据和类型。键值对的数据包含键和值,键的格式一般为字符串,值的格式可以包含字符串、数值、数组、文档等类型。
文档是mongodb的核心概念,是数据的基本单元,文档的数据结构和json基本相同,实际存储时是bson(binary json)。
文档存储在集合中,一个集合是由一些文档构成的对象。文档类似于关系型数据库的行,集合类似于表。同一个集合可以插入不同格式的文档,但是通常情况下一个集合中的文档应该具有相关性。
数据库包含多个集合,通常一个应用的所有数据存储到同一个数据库。

mongodb的最大优点是非常适合层级式的数据存储。举个简单例子,比如A对象包含B对象,B对象包含C对象,关系型数据库应该会存三个表,查询时也需要三个表进行关联。而文档数据库可以把ABC三个对象按照层级关系作为一个文档存储到一个集合中,整存整取。
此外,mongodb支持分布式存储,可以满足海量数据的存储和查询。

缺点:1)不支持事务;2)key字段占用额外空间

参考文档:

2. 常用命令

2.1. 登录数据库

1
2
3
#mongo --host localhost --port 27017
mongo --host localhost --port 27017 -uroot -p
mongo --host localhost --port 27017 -uroot -p --authenticationDatabase=admin

其中authenticationDatabase参数指定认证数据库,如果不指定,默认是admin。这是因为Mongodb允许存在多个同名的用户存在,但同名的用户认证db必须不能相同。

2.2. 查看帮助

1
help

2.3. 操作数据库

1
2
3
4
5
6
7
8
9
10
11
// 查看数据库
show dbs

// 切换数据库(不存在则创建)
use local

// 查看当前数据库
db

// 退出
exit

2.4. 操作表

1
2
3
4
5
6
7
// 查看有哪些表
show tables
show collections

// 显示表中的全部内容
db.startup_log.find()
db.startup_log.find().pretty()

2.5. 操作用户和权限

1
2
3
4
use admin
db.createUser({ user:'mongouser',pwd:'thepasswordA1',roles:[{ role:'readWrite', db: 'testdb'},"readWriteAnyDatabase"]});
db.auth('mongouser', 'thepasswordA1')
use testdb

2.6. 导出导入数据

2.6.1. 整库导出导入

1
2
3
4
5
6
7
# 导出数据库
mongodump --host 10.66.187.127:27017 -u mongouser -p thepasswordA1 --authenticationDatabase=admin --db=testdb -o /data/dump_testdb
# 导出数据库,根据提示输入密码
mongodump --host 10.66.187.127:27017 -u mongouser --authenticationDatabase=admin --db=testdb -o /data/dump_testdb

# 导入数据库
mongorestore --host 10.66.187.127:27017 -u mongouser -p thepasswordA1 --authenticationDatabase=admin --dir=/data/dump_testdb

2.6.2. 单个集合导出导入

1
2
3
4
5
6
# 导出数据集合
mongoexport --host 10.66.187.127:27017 -u mongouser -p thepasswordA1 --authenticationDatabase=admin --db=testdb --collection=testcollection -o /data/export_testdb_testcollection.json


# 导入数据集合
mongoimport --host 10.66.187.127:27017 -u mongouser -p thepasswordA1 --authenticationDatabase=admin --db=testdb --collection=testcollection2 --file=/data/export_testdb_testcollection.json

3. 重置密码

3.1. bin mongo重置密码

1、修改配置文件,取消用户验证

1
vim /etc/mongod.conf

注释掉:

1
2
#security:
# authorization: enabled

2、重启mongo

1
systemctl restart mongod

3、重置密码

1
2
3
4
5
mongo
> show dbs
> use admin
> db.system.users.find()
> db.changeUserPassword("admin","xxx")

4、开启用户验证,重启mongo

3.2. docker mongo重置密码

1、启动重启密码容器

1
docker run -it --name mongo-repair -d --volumes-from mongo mongo:4.2.11 --noauth

2、进入容器

1
docker exec -it mongo-repair /bin/bash

3、重置密码

1
2
3
4
5
mongo
> show dbs
> use admin
> db.system.users.find()
> db.changeUserPassword("admin","xxx")

4、启动原容器

1
2
3
docker stop mongo-repair
docker rm mongo-repair
docker start mongo-repair
  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-mongodb-start/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~