一、Insert *** 作
Insert *** 作是MongoDB插入数据的基本方法,对目标集合使用Insert *** 作,会将该文档添加到MongoDB并自动生成相应的ID键。文档结构采用类似JSON的BSON格式。常见的插入 *** 作主要有单条插入和批量插入两种形式。插入时只是简单地将文档存入数据库中,不进行额外的验证,也不会执行代码,所以不存在注入式攻击的可能。
1、单条插入
2、批量插入
MongoDB对批量插入的支持是通过传递多个文档组成的数组到数据库来实现的。由于它插入数据是通过发送TCP请求的,这样只需发送单个TCP请求,且数据库无需处理大量的消息头,减少插入时间。这种方式的批量插入一次只能将多个文档插入到一个集合中,对于插入到多个集合可以循环调用Insert *** 作。
二、Remove *** 作
remove函数可以用来删除数据,能接受一个文档作为可选参数,只有符合条件的文档才会被删除。删除数据是永久性的,不能撤销,也不能恢复,需要谨慎。删除文档需要清空整个集合,不如直接删除集合快。
三、Update *** 作
update函数用于修改数据库中的数据,接收两个参数,一个是查询文档,用来查找要更新的文档,另一个是修改器文档,用来描述对找到的文档做哪些修改。更新 *** 作是原子性的,如果多个更新同时发生,则所有的更新都会执行,但最后的更新是最终赢家。
1、整体更新(文档替换)
2、局部更新(修改器)
部分更新是通过原子的更新修改器实现的,使用修改器时除了”_id“的值不能改变,其他任何值都能改变。文档替换是可以改变所有值的。
$inc修改器:将指定属性的值增加特定的步长,如果键不存在则创建。
$set修改器:用来指定一个键的值,如果不存在则创建。
$push:数组修改器,如果指定的键存在,则向已有的数组末尾加入一个元素,键不存在则会创建一个新的数组。
3、upsert *** 作
upsert *** 作具有saveOrUpdate的功能,如果没有文档符合更新条件,则以更新条件和更新文档为基础创建一个新的文档。如果有符合更新条件的文档,则正常更新。创建新文档时会以条件文档作为基础,将修改器作用其之上。upsert *** 作是原子性的,高效的。
四、瞬间完成
上面的插入,删除和更新 *** 作都是瞬间完成的,不需要等待数据库响应。这样的实现可以获取高性能,速度非常快,只会受客户端发送速度和网络速度的制约。但由于不会获取服务器状态,所以不能保证 *** 作顺利完成。这对于付费系统,安全性较高的系统是不可行的,此时对这些 *** 作需要使用的安全版本。安全版本会在 *** 作执行后立即运行getLastError命令,来检查是否执行成功。如果失败一般会抛出可捕获的异常,然后可以在代码中处理。
1. 删除”ban_friends_id”:”BAN121113″数据>db.test_ttlsa_com.remove({"ban_friends_id":"BAN121113"})
2. 删除所有数据
>db.test_ttlsa_com.count()
2
>db.test_ttlsa_com.remove({})
>db.test_ttlsa_com.count()
0
3. 删除集合
>show collections
system.indexes
test_ttlsa_com
>db.test_ttlsa_com.drop()
true
>show collections
system.indexes
4. 删除整个数据库
>show dbs
local 0.078125GB
ttlsa_com 0.203125GB
>db
ttlsa_com
>db.ttlsa_com.getDB()
ttlsa_com
>show collections
system.indexes
>db.dropDatabase()
{ "dropped" : "ttlsa_com", "ok" : 1 }
>db
ttlsa_com
>show dbs
local 0.078125GB
在执行删除整个数据库前,要谨慎,执行db命令查看当前的使用的数据库,可确保误删除,造成数据的丢失,是个不错的习惯啦。
MongoDB 增加用户 删除用户 修改用户 读写权限 只读权限,
MongoDB用户权限分配的 *** 作是针对某个库来说的。--这句话很重要。
1、 进入ljc 数据库:
use ljc -www.2cto.com- --ljc为数据库名称。
2、添加用户(读写权限,readOnly-->false):
db.addUser("java","java")
3、 查看一下所有的用户
db.system.users.find()
{ "_id" : ObjectId("4e02a89fb841deb5fda3e5e2"), "user" : "java", "readOnly" : fa
lse, "pwd" : "59cf7cc156874cbd35cb00869126f569" }
4、用户授权。
db.auth("java","java")
1 显示为1 表示授权成功,0表示不成功。
5、 添加用户(只读权限,readOnly-->true):
db.addUser("java1","java1",true)
db.system.users.find()
{ "_id" : ObjectId("4e02a89fb841deb5fda3e5e2"), "user" : "java", "readOnly" : fa
lse, "pwd" : "59cf7cc156874cbd35cb00869126f569" }
{ "_id" : ObjectId("4e02aae6b841deb5fda3e5e3"), "user" : "java1", "readOnly" : t
rue, "pwd" : "fca6bda05c87a72cce0a4a6458d1e266" }
注意上面标红的位置的readOnly 只读于可写是有区别的。
6、更改密码(为已经存在的用户更改密码):
db.addUser("java","java1")
7、删除用户:
db.system.users.remove({user:"java1"})
关于库权限,如果用户需要全局的权限,可以在admin和local的两个库里添加,但是需要重启库,
有待验证。
==========================================================================
MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限
说明:增加用户是针对数据库进行 *** 作
1.进入到数据库 use dbname
2.针对当前数据库添加用户 权限是针对当前数据
1.添加并验证用户
>use admin
>db.addUser("zjx","tsjianxin")
>db.auth("zjx","tsjianxin")
2.查看已存在的用户
>db.system.users.find()
3.现在来给另一个数据库51cv配置一个读写权限的-www.2cto.com-用户
>use 51cv
>db.addUser("51cvrw","51cv")
..."readOnly" : false...
4.配置一个只读权限的用户
>use 51cv
>db.addUser("51cvr","51cv",true)
>db.system.users.find()
..."readOnly" : true...
5.删除用户
>use dbname (admin or 51cv ,etc)
>db.system.users.remove({user:"haha"})
>db.system.users.find()
6.用户登录数据库测试
for:mongod dbname -u uname -p password
mongo admin -u zjx -p tsjianxin
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)