MongoDB 基本使用
一、数据库操作
-
连接数据库
mongo --host 192.168.0.21 --port 27017
-
查看数据库
show dbs
-
创建库
use test_db # 库存在就切换到该库,不存在就创建。刚创建的数据库不显示在 show dbs 列表中,如要显示需插入数据。 db.test_col.insert({name: "aaa"}) show dbs
-
查看当前所在数据库
db
-
删除库
db.dropDatabase()
二、文档操作
-
插入文档
db.test_doc.insert({name: "zhangsan", age: 18, job: "Student"}) # 3.2 版本之后引入的新方法 db.test_doc.insertOne({name: "zhangsan", age: 18, job: "Student"}) db.test_doc.insertMany([{name: "zhangsan", age: 18, job: "Student"}, [{name: "wangwu", age: 19, job: "Teacher"}])
-
查询文档
# 查看集合 show collections # 查询所有文档 db.test_doc.find({}) # 查询 name 是 zhangsan 的文档 db.test_doc.find({name: "zhangsan"})
-
更新文档
db.test_doc.update({name: "zhangsan"}, {$set: {name: "wangwu"}}) db.test_doc.find().pretty() # 通过 save 方法替换已存在的文档 db.test_doc.save({"_id":ObjectId("5ff475f26f2a2d9739aad1a3"), name: "lisi", age: 19, job: "IT"}) db.test_doc.insert({name: "a1", count: 2}) db.test_doc.insert({name: "b1", count: 3}) db.test_doc.insert({name: "c1", count: 10}) db.test_doc.insert({name: "d1", count: 20}) db.test_doc.insert({name: "e1", count: 30}) # 只更新满足条件的第一条 db.test_doc.update({count: {$gt: 10}}, {$set: {"name": "big_d1"}}, false, false) # 更新满足条件的所有的 db.test_doc.update({count: {$gt: 5}}, {$set: {"res": "big_big"}}, false, true) # 只添加第一条 db.test_doc.update({count:{$gt: 5}}, {$set: {"hello": "wow"}}, true, false) # 全部添加进去 db.test_doc.update({count:{$gt: 5}}, {$set: {"status": "ok"}}, true, true) # 3.2 版本之后引入的新方法 db.test_doc.updateOne({count: {$gt: 5}}, {$set: {"res": "big_big"}}) db.test_doc.updateMany({count: {$gt: 5}}, {$set: {"res": "big_big"}}) db.test_doc.replaceOne({count: {$gt: 5}}, {$set: {"res": "big_big"}})
-
删除文档
# 删除满足条件的第一条 db.test_doc.remove({count: {$gt: 5}}, 1) # 删除所有 db.test_doc.remove({}) # 3.2 版本之后引入的新方法 db.test_doc.deleteOne({}) db.test_doc.deleteMany({})
三、用户管理
为了安全起见 mongodb 配置文件中加入 auth = true
以开启权限认证
yaml版本的配置
security: authorization: enabled
# 为 test_db 库创建一个可读写的用户 use test_db db.createUser({user: "test_user", pwd: "123456", roles: [{role: "readWrite", db: "test_db"}]}) show users db.changeUserPassword("test_user", "112233") # 带用户名密码连接 mongo mongo --host 192.168.0.21 --port 27017 -u test_user -p 112233 --authenticationDatabase test_db
MongoDB 内置角色有如下:
-
数据库用户角色:read、readWrite
-
数据库管理角色:dbAdmin、dbOwner、userAdmin
-
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
-
备份恢复角色:backup、restore
-
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
-
超级用户角色:root — 这里还有几个角色间接或直接提供了系统超级用户的访问 (dbOwner 、userAdmin、userAdminAnyDatabase)
-
内部角色:__system
四、mongodb 备份还原 / 导出导入
1. 备份整个库
mongodump -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName -o /data/backup/
2. 还原整个库
mongorestore -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName --dir /data/backup/
# 可以加上 --drop 参数, 意思是恢复前先删除当前数据(谨慎使用)
3. 导出一个 collection
mongoexport -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName -c collectionName -o /data/backup/collectionName.json --type json # 也可以导出 csv 格式的数据。--type csv, -f 指定导出数据的字段 mongoexport -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName -c collectionName -o /data/backup/collectionName.csv --type csv -f "_id,user_id,user_name,age,status"
4. 导入一个 collection
mongoimport -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName -c collectionName --file /data/backup/collectionName.json
以上就是 MongoDB 的基本使用。更多内容还是参考官方文档://docs.mongodb.com/manual/crud/