MongoDB入门
一. 基础概念
在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比:
SQL术语/概念
MongoDB术语/概念
解释/说明
database
database
数据库
table
collection
数据库表/集合
row
document
数据记录行/文档
column
field
数据字段/域
index
index
索引
table joins
表连接(MongoDB不支持)
primary key
primary key
主键,MongoDB自动在每个集合中添加_id的主键
1、一个mongodb实例可以创建多个数据库
2、一个数据库可以创建多个集合
3、一个集合可以包括多个文档。
二. 数据库操作:命令行
首先的话,可以打开命令窗口去试试
用管理员打开cmd,然后跳到对应安装目录进行启动
查询全部数据库
show dbs
显示当前数据库
如果当前没有切换数据库,默认显示“test”
db
-创建/切换数据库
数据库存在则切换到此数据库,不存在则创建
注意:新创建的数据库不显示,需要至少包括一个集合。
use 数据库名称
删除数据库(慎用!!!)
db.dropDatabase()
三. 集合操作:命令行
集合相当于关系数据库中的表,一个数据库可以创建多个集合,一个集合是将相同类型的文档管理起来。
创建集合
db.createCollection(name, options)
name: 新创建的集合名称
options: 创建参数
删除集合
db.集合名称.drop()
use demo
show collections
db.student.drop()
显示集合
show collections
扩展:集合创建过程可以设置参数的
在demo数据库中,创建book集合,并限定最大文档数为3
参数capped: 如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
参数size: 为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,必须指定size字段。
参数max: 指定固定集合中包含文档的最大数量。
use demo
db.createCollection('book', { capped: true,size: 1024 , max : 3 } )
三.文档操作
mongodb中文档的格式是json格式,下边就是一个文档,
包括两个key:_id主键和name
{
"_id" : ObjectId("5b2cc4bfa6a44812707739b5"),
"name" : "传智专修学院"
}
注意:
插入命令
每个文档默认以_id作为主键,主键默认类型为ObjectId(对象类型)
mongodb会自动生成主键值。
db.集合名称.insert(document)
db.student.insert({"name":"张三","age":10})
查询命令
db.book.find()
db.book.find( {"age": 18} ) //一个条件
db.book.find( {"age": 18,"name":"张3"} ) //多条件
--- 查询 age 为 18 所有数据,仅显示name的值
db.book.find( {"age": 18} , {"name":1})
--- 查询所有数据,仅显示name的值
db.book.find( {} , {"name" : 1} );
更新文档
命令格式
db.collection.update(
,
,
)
query:查询条件,相当于sql语句的where
update:更新文档内容
options:选项
替换文档
-- 将符合条件 "name":"张三"的第一个文档替换为{"name":"张3","age":21}。
db.student.update({"name":"张三"},{"name":"张3","age":21})
-- 查询 age = 18 信息,将第一条替换 {name: 张三 }
db.book2.update({ "age": 18 },{ "name" : "张三" })
$set修改器
使用$set修改器指定要更新的key,key不存在则创建,存在则更新。
db.student.update({"name":"张3"},{$set: {"name":"张33"} })
db.student.update({"name":"张33"},{$set: {"sex":"男"} })
multi替换所有
multi:false表示更新第一个匹配的文档,true表示更新所有匹配的文档。
db.student.update({"name":"张三"},{$set:{ "age":15}},{multi:true})
四.删除文档
db.集合名称.remove()
query:删除条件,相当于sql语句中的where
删除符合条件的文档
db.student.remove({"name":"张33"})
通过id删除
db.student.remove({"_id" : ObjectId("5edcfb4cb7376427b4111714")})
删除所有文档
db.student.remove({})
五. 用户操作:命令行
创建用户
语法格式:
db.createUser({
user: "",
pwd: "",
customData: { },
roles: [
{ role: "", db: "" } | "",
...
]
})
-- 创建root用户,角色为root
use admin
db.createUser({
user:"root",
pwd:"root",
roles:[{role:"root",db:"admin"}]
})
内置角色
角色分类
取值
描述
超级用户角色
root
数据库用户角色
read
readWrite
数据库管理角色
dbAdmin
dbOwner
userAdmin
集群管理角色
clusterAdmin
clusterManager
hostManager
clusterMonitor
备份恢复角色
backup
restore
所有数据库角色
readAnyDatabase
readWriteAnyDatabase
userAdminAnyDatabase
dbAdminAnyDatabase
查询用户
查询当前库下的所有用户
show users
修改用户
语法格式
db.updateUser(
"",
{
customData : { },
roles : [
{ role: "", db: "" } | "",
...
],
pwd: ""
},
writeConcern: { }
)
-- 修改root用户的角色为readWriteAnyDatabase
use admin
db.updateUser("root",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})
.修改密码
语法格式
db.changeUserPassword("username","newPasswd")
-- 修改root用户的密码为1234
use admin
db.changeUserPassword("root","1234")
删除用户
语法格式:
db.dropUser("用户名")
看完恭喜你,又知道了一点点!!!
你知道的越多,不知道的越多!
~感谢志同道合的你阅读, 你的支持是我学习的最大动力 !加油 ,陌生人一起努力,共勉!!