[008-03].第3.节基本常用命令

1 案例需求:

1.1.需求说明:

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

在这里插入图片描述


2.MongoDB操作

2.1.数据库操作

a.选择和创建数据库

  • 1.选择和创建数据库语法:use 数据库名称
  • 说明:如果数据库不存在则自动创建,例如,以下语句创建spitdb数据库:use articledb,如果之前articledb不存在,则自动创建
  • 2.查看当前用户有权限查看的所有的数据库,其命令是:show dbsshow databases
  • 注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。否则我们执行show dbsshow databases命令的时候,是看不到刚刚创建的集合的
  • 4.查看当前正在使用的数据库命令:db
  • 5.MongoDB 中默认的数据库为 test,如果你没有选择数据库,集合将存放在 test 数据库中。
  • 数据库名可以是满足以下条件的任意UTF-8字符串。
    • 不能是空字符串(“”)。
    • 不得含有’ '(空格)、.、$、/、\和\0 (空字符)。
    • 应全部小写。
    • 最多 64 字节。
  • 7.有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库
    • admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
    • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
    • config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

b.数据库的删除:

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

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


2.2.集合操作:

a.集合的命名规范:

  • 集合名不能是空字符串""。
  • 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
  • 集合名不能以"system."开头,这是为系统集合保留的前缀。
  • 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$

b.集合创建:

1.集合创建说明:

  • 1.集合,类似关系型数据库中的表,它即可以显示的创建,也可以隐式的创建

2.集合的显式创建:

  • 1.基本语法格式:db.createCollection(name)
  • 2.参数说明:
    • name: 要创建的集合名称
    • 例如:创建一个名为mycollection的普通集db.createCollection("mycollection")
    • 查看当前库中的表:show tables命令:show collections 或 show tables

3.集合的隐式创建(常用)

  • 1.当向一个集合中插入一个文档的时候,如果集合不存在,则会自动创建集合。
  • 2.详见文档的插入章节。
  • 3.提示:通常我们使用隐式创建文档即可。

c.集合的删除:

  • 1.集合删除语法格式如下:db.collection.drop()或者db.集合.drop()
  • 2.返回值:
    • 如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。
    • 例如:要删除mycollection集合:db.mycollection.drop()

2.3.文档操作:

a.文档操作说明:

  • 1.文档(document)的数据结构和 JSON 基本一样
  • 2.所有存储在集合中的数据都是 BSON 格式

b.文档的插入

单个文档插入:

  • 1.使用insert()save() 方法向集合中插入文档,语法如下:
    在这里插入图片描述
  • 2.参数解释:
    在这里插入图片描述
  • 3.实现单条数据插入:
    在这里插入图片描述
  • 4.提示:
    • mongo中的数字,默认情况下是double类型,如果要存整型,必须使用函数NumberInt(整型数字),否则取出来就有问题了。
    • 插入当前日期使用 new Date()
    • 插入的数据没有指定 _id ,会自动生成主键值
    • 如果某字段没值,可以赋值为null,或不写该字段。
  • 5.注意:
    • 文档中的键/值对是有序的。
    • 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。MongoDB区分类型和大小写。
    • MongoDB的文档不能有重复的键。
    • 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
    • 文档键命名规范:
      • 键不能含有\0 (空字符)。这个字符用来表示键的结尾
      • 和$有特别的意义,只有在特定环境下才能使用。
      • 以下划线"_"开头的键是保留的(不是严格要求的)。

文档的批量插入

  • 1.语法
    在这里插入图片描述
  • 2.参数说明:
    在这里插入图片描述
  • 3.批量插入多条评论:
    在这里插入图片描述
  • 4.提示:
    • 插入时指定了 _id ,则主键就是该值。
    • 如果某条数据插入失败,将会终止插入,但已经插入成功的数据不会回滚掉。
    • 因为批量插入由于数据较多容易出现失败,因此,可以使用try catch进行异常捕捉处理,测试的时候可以不处理。如(了解):
      在这里插入图片描述

c.文档的基本查询

  • 1.查询数据的语法格式如下:db.collection.find(<query>, [projection])
  • 2.参数:
    在这里插入图片描述
  • 3.查询所有:如果我们要查询spit集合的所有文档,我们输入以下命令
    在这里插入图片描述
  • 4.查询指定id
    在这里插入图片描述
  • 5.指定id但只要一个文档:
    在这里插入图片描述
  • 6.投影查询(Projection Query):
    • 如果要查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)。
      • 如:查询结果只显示 _id、userid、nickname :>db.comment.find({userid:“1003”},{userid:1,nickname:1}),其中默认 _id 会显示
      • 如:查询结果只显示 、userid、nickname ,不显示 _id :>db.comment.find({userid:“1003”},{userid:1,nickname:1,_id:0})
      • 再例如:查询所有数据,但只显示 _id、userid、nickname :>db.comment.find({},{userid:1,nickname:1})

c.文档的更新:

  • 1.更新文档的语法:
db.collection.update(query, update, options)
//或
db.collection.update(
	<query>,
	<update>,
	{
	upsert: <boolean>,
	multi: <boolean>,
	writeConcern: <document>,
	collation: <document>,
	arrayFilters: [ <filterdocument1>, ... ],
	hint: <document|string> // Available starting in MongoDB 4.2
	}
)

  • 2.参数:
    在这里插入图片描述> 提示:主要关注前四个参数即可。
  • 3.覆盖的修改
db.comment.update({_id:"1"},{likenum:NumberInt(1001)})
  • 4.局部修改
db.comment.update({_id:"2"},{$set:{likenum:NumberInt(889)}})

  • 5.批量的修改
//默认只修改第一条数据
db.comment.update({userid:"1003"},{$set:{nickname:"凯撒2"}})
//修改所有符合条件的数据
db.comment.update({userid:"1003"},{$set:{nickname:"凯撒大帝"}},{multi:true})
  • 6.列值增长的修改
    如果我们想实现对某列值在原有值的基础上进行增加或减少,可以使用 $inc 运算符来实现。
    需求:对3号数据的点赞数,每次递增1
db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})

d.删除文档

  • 1.删除文档的语法结构:
db.集合名称.remove(条件)
  • 2.以下语句可以将数据全部删除,请慎用
db.comment.remove({})
  • 3.如果删除_id=1的记录,输入以下语句
db.comment.remove({_id:"1"}

3.5 文档的分页查询

a.统计查询:

  • 23
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值