MongoDB基本常用命令

1.案例需求

存放文章评论的数据存放到MongoDB中,数据结构参考如下:

数据库:articledb

专栏文章评论comment  
字段名称字段含义字段类型备注
_idIDObjectID或StringMongo的主键字段
articleid文章IDString 
content评论内容

String

 
userid评论人IDString 
nickname评论人昵称String 
createdtime评论的日期时间Date 
likenum点赞数

Int32

 
replynum回复数Int32 
state状态String0:不可见;1:可见;
parentid上级IDString如果为0表示文章的顶级评论

2.数据库操作

2.1 选择和创建数据库

选择和创建数据库的语法格式:use 数据库名称
注意:如果数据库不存在则自动创建,例如,我们创建articledb数据库:use articledb

查看有权限查看的所有数据库的命令:

show dbs / show databases
查看当前正在使用的数据库命令:db

问题:大家如果尝试了use articledb命令后,会发现我的库不是已经创建了吗,为什么执行show dbs 不会显示出来呢?例如:

解答:因为这和mongodb的存储机制有关,可以把mongodb存储机制看成两部分,如图:

当使用 use articledb 的时候. articledb 其实存放在内存之中, 当 articledb 中存在一个 collection 之后, mongo 才会将这个数据库持久化到硬盘之中.

特别强调一点: 在MongoDB中,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建!

拓展:

数据库命名可以是满足以下条件的任意utf-8字符串

  • 不能是空字符串""
  • 不能含有' ' 、空格、.、$、/、\
  • 应全部小写,最多64个字节

接下来的这个问题,想必大家也有和我一样的疑惑?如下的这三个默认库,有什么作用呢?

其实,有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库

  • admin: 从权限角度考虑, 这是 root 数据库, 如果将一个用户添加到这个数据库, 这个用户自动继承所有数据库的权限, 一些特定的服务器端命令也只能从这个数据库运行, 比如列出所有的数据库或者关闭服务器
  • local: 数据永远不会被复制, 可以用来存储限于本地的单台服务器的集合 (部署集群, 分片等)
  • config: Mongo 用于分片设置时, config 数据库在内部使用, 用来保存分片的相关信息

2.2 数据库分配用户

db.system.users.remove({user:"用户名"})  注意:需要在admin库下执行语句删除数据库用户
db.createUser({user:'root',pwd:'root',roles:[{ "role" : "root", "db" : "odi" }]});  解释: 用户:root 密码:root 角色:root 数据库:odi 注意:需要在当前库下执行语句 例如 odi库 ,就在odi库下创建用户创建数据库用户,设置账号、密码、权限、数据库(具体库名)
  

2.3 用户分配角色

 read只读权限
readWrite 读写库的权限
dbAdmin  某数据库管理权限
userAdmin某数据库用户的管理权限,包括创建用户,授权的管理
dbOwner某数据库的所有者,拥有该库的所有权限,包括readWrite,dbAdmin和userAdmin权限
readAnyDatabase所有数据库角色
root超级用户角色

2.4 数据库的删除 

Mongodb删除数据库的语法格式如下:db.dropDatabase()

提示:主要用来删除已经持久化的数据库!

3.集合操作

集合,类似于关系型数据库中的表,可以显示创建,也可以隐示的创建!

3.1 集合的显示创建

基本语法格式:参数说明:

db.createCollection(name);

查看当前库中的表: show tables

name:要创建的集合名称

3.2 集合的隐示创建

 

3.3 集合的删除

基本语法格式:返回值说明:

db.collection.drop();其中collection是集合的名称;

查看当前库中的表: show tables

true 删除成功,false 删除失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值