MongoDB1 mongodb介绍, 启动和配置, 账号管理, 数据库操作curd操作, 集合操作, 导出导入数据库
# 1 一个非关系型数据库(表和表间没联系,不能建外键),文档型数据库(json存储的) ## Mongodb可以存特殊的集合类型(一个字段可以存字典,列表)。mysql是不支持这种格式的,如果要存,只能转成json格式存到字段里。实在没办法了,在字段里存json格式,加删数据,把json改下存进去。 # 2 mysql mongodb 数据库 数据库(database) 表 集合(collection) 行 文档(document) 列 field(字段) 索引 索引 连表 不支持(可以用子查询(表join不支持,像django orm__连表关联查询不支持))#大型项目一般不建外键关联,join。这两种非常异响性能 主键 将_id字段设为主键 # 3 文档 就是个字典{"name":"lqz","age":18} ##意味着可以直接传给前端,不需要用orm,把数据转成json格式给前端 ## 需要注意的点: #文档中的键/值是有序的 #值可以是字符串,数字,其他集合类型(列表,字典) #类型区分大小写 #文档中不能有重复的键 #文档中的值可以是多种不同的数据类型,也可以是一个完整的内嵌文档。键可以是任意UTF-8字符 # 4 一组文档组成一个集合 -小小的问题(可以组成一个文档) {"name":"lqz","age":18} {"yyy":"yyy","kkk":90} {"xxx":"xxx"} # 5 多个集合组成一个数据库 # 6 安装和启动 -下载安装包:https://www.mongodb.com/dr/fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.6-signed.msi/download -需要下载个客户端(类似于:Navicat),robo 3T # 7 安装 # 在linux和mac下,只要把包解压开就行,不需要安装 -mongodb-win32-x86_64-2012plus-4.2.6-signed.msi一路下一步,将mogodb设置成服务,注意数据目录和日志目录,mongod compass那个玩意不要装 # 最好默认装c盘,经测试装d盘会报权限问题,删服务,用命令建服务 -robo3t-1.3.1-windows-x86_64-7419c406.exe. 一路下一步 ## 在服务中可以把mongodb服务改成手动启动,开机不用自动启动 # net start MongoDB # net stop MongoDB
mongodb安装
robo3t安装
#### 附上之前自己弄的mongodb3.4.10安装方法和使用 # https://blog.csdn.net/baidu_31333625/article/details/73126657 配置 # 客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。 # mongo --port 27017 # django增删查改 # https://blog.csdn.net/kuangshp128/article/details/79039366
# 1 mongodb的启动命令 -C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --service -mongod.exe --config 配置文件 -在mongdb的安装路径下bin路径有:mongod.exe(服务端) 和 mongod.cfg(配置文件) mongo.exe(客户端) -在终端到路径下(或加入环境变量)输入mongo.exe,可以连接进去 show databases; # 可以查看所有的数据库 -一般我们喜欢用图形化客户端连接:robo3t -create---》输入地址,端口号--》连接
配置文件
storage: dbPath: C:\Program Files\MongoDB\Server\4.2\data # 数据路径 journal: enabled: true # where to write logging data. systemLog: destination: file logAppend: true path: C:\Program Files\MongoDB\Server\4.2\log\mongod.log # 日志文件路径 # network interfaces net: port: 27017 # 监听的端口号 bindIp: 0.0.0.0 # 绑定的地址0.0.0.0代表远程可以连接 # 2 可以使用客户端连接 ./mongo --host 10.0.0.5 --port 27017 # 3 可以用图形化界面的客户端连接
# 1 跟mysql有点区别:mongodb的用户是建在数据库下的,但是可以对其他库有权限(mysql用户是单独存在库里,也是user表) # ——可以用robo3t,在System下admin库下Users表中右键Add User创建用户(也可以用下面方法添加)
# 2 操作步骤(全局有一个db,在哪个库下,db就是谁) -show databases; # 查看多有数据库 -use admin; # 使用admin这个库 # 输入db可以看当前在哪个库下 -db.createUser( # db的一个方法,在当前库下创建一个用户 { user: "root", # 用户名 pwd: "123", # 方法 roles: [ { role: "root", db: "admin" } ] # 用户的权限,用户管理的数据库(对哪个库操作) } ) # 创建成功后,可以在图形界面里打开Users表看到 use test # 空数据库不显示 db.createUser( { user: "lqz", pwd: "123", roles: [ { role: "readWrite", db: "test" }, # 权限为读写,针对的是test库 { role: "read", db: "db1" } ] # 权限为只读,针对的是db1库 } ) # 5 查看用户 db.getUser("root") # 参看名字为root的人 -show users # 查看当前库下的账户 #### 了解 #3、重启数据库 net stop MongoDB net start MongoDB #需要以开启认证的方式启动mongodb服务 mongod --config "mongod.cfg" --auth #4、登录:注意使用双引号而非单引号 #以管理员登陆 ./mongo --host 10.0.0.5 --port 27017 -u "root" -p "123" --authenticationDatabase "admin" # 以用户lqz登陆(只对test库有权限) ./mongo --host 10.0.0.5 --port 27017 -u "lqz" -p "123" --authenticationDatabase "test" mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin" 也可以在登录之后用db.auth("账号","密码")登录 mongo show dbs use admin # db是一个全局变量,代表当前所有库 db.auth("root","123") show tables;
# 增加 use test # 有就进去,没有就创建并进去(如没有数据,表并没真正生成) # 输入db可以看当前是什么库 db.t1.insert({"name":"lqz"}) # 库,集合,文档全都进去了(朝test库下面的t1表里插入数据,表会生成) #注意: db.t1.insert({"yy":"lqz"}) # db.t1.insert({"xx":"lqz"}) ## 字段完全不一致也可以插入 # 查询 show databases; show dbs # 两种方法都行 # 删除 use test #先切换到要删的库下 db.dropDatabase() #删除当前库
# 新增 use test db.table1.insert({"name":"lqz"}) # 有table1就使用,没有就新增(此处若没test,也会创建) db.table2.insert({'b':2}) # 查询(都可以) show tables # 为了和mysql统一语法 show collections # 删除 db.table1.drop()
6导出导入数据库
导出数据库
mongodump -h localhost --port 27017 -d perspective -o C:\Users\ldc\Desktop\新建文件夹
>mongodump -h dbhost -d dbname -o dbdirectory
-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
导入数据库
解压
在cmd中输入命令导入本地库中(命令路径要先添加到环境变量中 -drop 后面跟导入文件的路径)
mongorestore -h localhost --port 27017 -d perspective --drop C:\Users\a\Desktop\perspective\perspective
>mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
--directoryperdb:备份数据所在位置,例如:c:\data\dump\test,这里为什么要多加一个test,而不是备份时候的dump,读者自己查看提示吧!
--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!