MongoDB的基本操作
MongoDB的基本操作
数据库操作
-
显示现有数据库
1
> show dbs
-
创建、切换数据库
1
> use <database_name>
- 如果数据库不存在,则创建数据库,否则切换到指定数据库
-
删除数据库
-
首先切换到目的数据库,然后执行以下命令:
1
> db.dropDatabase()
-
集合操作
-
显示已有集合,以下两种都可以
1
2> show collections
> show tables -
创建集合
1
> db.createCollection(<collection_name>, options)
-
当插入文档时,MongoDB会自动创建集合
-
options可以选参数
- capped(bool):是否创建固定大小的集合,当达到最大值时,会覆盖最早的文档,capped为true时,需要指定size参数
- size(字节数):固定集合的最大值
- max(数值):指定固定集合中文档的最大数目
- 注:
插入文档时,先检查size再检查max
-
举例:
1
2
3
4
5
6
7
8
9>db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
# 以下为返回值
{
"ok" : 0,
"errmsg" : "Collection already exists. NS: test.mycol",
"code" : 48,
"codeName" : "NamespaceExists"
}
-
-
删除集合
1
> db.<collection_name>.drop()
文档操作
-
插入文档
1
2
3> db.<collection_name>.insert(document,<options>)
> db.<collection_name>.insertOne()
> db.<collection_name>.insertMany()-
如果主键已经存在,会抛出异常
org.springframework.dao.DuplicateKeyException
-
insertMany
方法插入的是一个document的list -
options说明
writeConcern
:写入策略,默认为1表示要求确认写策略,0表示不要求ordered
:是insertMany
中的,指定是否按顺序写入,默认为true
,false
表示不按顺序
-
举例:
1
2
3
4
5
6
7> db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
-
-
更新文档
1
2
3
4
5
6
7
8
9> db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)- options:
- query:查询条件,如
{'id':1}
代表id=1 - update:更新操作符
- upsert:如果不存在,是否插入,默认为
false
- multi:更新找到的所有记录,默认为
false
,表示只更新找到的第一条 - writeconcern:抛出异常的级别
- query:查询条件,如
- options:
-
删除文档
1
2
3
4
5
6
7
8
9
10
11> db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
# 删除一条满足query的
> db.collection.deleteOne(<query>)
# 删除所有满足query的
> db.collection.deleteMany(<query>) -
查询文档
1
2> db.<collection_name>.find(<query>, <projection>)
> db.<collection_name>.find(<query>, <projection>).pretty() # 返回格式化的文档,显得更加直观- query是查询条件
- projection表示使用投影操作返回指定的字段
-
具体
<query>
如何书写,在下一节(MongoDB的高级查询)中介绍
用户操作
-
一旦执行过一次createUser,Localhost Exception立即消失,只能通过验证后才能进行创建操作
-
用户的role
- 用户角色:
read
、readWrite
- 数据库管理角色:
dbAdmin
、dbOwner
、userAdmin
- 超级用户:
root
- 所有数据库角色:
readAnyDatabase
、readWriteAnyDatabase
、userAdminAnyDatabase
、dbAdminAnyDatabase
- 用户角色:
-
创建管理员用户
1
2> use admin
> db.createUser( {user: "root",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}) -
创建普通用户
1
2> use db1
> db.createUser( {user: "user1",pwd: "123456",roles: [ { role: "readWrite", db: "db1" } ]}) -
修改用户
1
2
3
41. 修改权限
db.updateUser("<user_name>",{roles:[role1,role2...]})
2. 修改密码
db.updateUser("<user_name>","pwd") -
密码认证
1
> db.auth("<user_name>","pwd")
-
删除用户
1
> db.dropUser("<user_name>")
-
查看用户列表
1
> db.system.users.find()
Comment