首页 > 代码库 > MongoDB笔记
MongoDB笔记
Mongodb 笔记
前几天在自己电脑里下了个新版本的mongodb 2.6 的版本,当进行用户授权认证的时候,添加用户命令db.addUser({"myname":"mypass"})
居然提示我addUser这个方法不存在。
官网查了下,原来方法改了,有点小坑啊。
mongodb 自2.6版本起,由db.createUser()
和 db.updateUser()
代替以前的 db.addUser()
.
而,新的用户添加函数里多了个角色roles
的参数。
再来说说设置超级管理的步骤:
mongodb 的管理员分每个数据库的管理员和超级管理员(admin里的)
设置超级管理员步骤:
启动mongod 的时候加上参数 –auth ,登录后切换到admin库下。
用
db.createUser({"user":"rootname","pwd":"rootpwd","roles":["root"]})
;然后退出,重新登录mongo 并带上 -u -p 参数 并且指定admin库
例如:./mongo -uroot -p123 localhost/admin
注 这里的roles里可以是数组,可以包含json,一般指定在某个数据库才拥有的角色:
eg: use mydb db.createUser({"user":"rootname","pwd":"rootpwd","roles":[{"rolename":"onlyinthisdb"},"root"]})
注 这里的意思是 在当前数据库中是 root 身份,在onlyinthisdb 这个数据库中是 rolename 身份。
具体的其他角色名称以及其权限范围详见官网,划分的挺细,也可以自定义角色。
管理员登录时必须选择数据库,经过数据库来验证用户,admin里的超级管理员虽然是超级管理员但是验证环节是在admin库里来完成的。db.auth({"root","123"})
所以超级管理员登录的时候也必须选择数据库为admin
mongodb 优化
分页:因为db.mongodb.find({field:xxx})
比较快,所以分页的时候,用 db.article.find().limit(articles_of_each_page)
,并记录最后一篇文章的_id(或其他排序值),之后查询 db.article.find({_id:{$lt:_id_stored}}).limit(articles_of_each_page)
,来查找下一页或者类似的上一页文章,可以避免大量计数。
MongoDB笔记