目录

数据库操作命令

选择和创建数据库

数据库的删除

集合操作命令

集合的显示创建

集合的隐式创建

集合的删除

文档基本的CRUD(增删改查)

文档的插入

文档的基本查询

文档的更新

删除文档


数据库操作命令

数据库常用的操作命令如下:

选择和创建数据库

选择和创建数据库的语法格式为:use 数据库名称,如果数据库不存在则自动创建,如下:

// 选择 admin 数据库,如果admin数据库不存在则自动创建
use admin

数据库的命令规范

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

1)不能是空字符串(""")。
2)不得含有 ' ' (空格)、. 、$ 、/ 、\ 和\0 (空字符)。

2)应全部小写。
4)最多64字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库
admin:从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

查看 “有权限查看的” 所有的数据库

show dbs 
或
show databases

举例如下:可以看到我们创建的admin1数据库并没有和MongoDB本身存在的数据库并列,下面只是显示我们切换到了admin1数据库而已,这是什么原因呢?

原来,MongoDB数据库的机制是,当我们创建数据库而并没有给其赋予集合内容时,该数据库就只会存储在内存当中而不会存储到磁盘中,这也就是导致我们虽然创建了数据库但是并没有显示的原因。说白了:你不给我数据我就不显示。

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_基本命令

查看当前正在使用的数据库命令

db

虽然我们创建的数据库并没有赋予其内容,但其也是真实存在的,如下:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_数据_02

数据库的删除

数据库的删除命令(主要用来删除已经持久化的数据库)

// db代表当前正在使用的数据库
db.dropDatabase()

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_经验分享_03

集合操作命令

集合类似于关系数据库中的表,可以显示的创建也可以隐式的创建,其相关命令如下:

集合的显示创建

集合的显示创建命令

// name: 要创建的集合名称
db.createCollection(name)

集合的命名规范

集合名不能是空字符串""。
集合名不能含有 \0字符(空字符),这个字符表示集合名的结尾。

集合名不能以 "system." 开头,这是为系统集合保留的前缀。

用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

查看当前库中的表的命令

show collections
或
show tables

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_数据库_04

集合的隐式创建

集合的隐式创建命令

当向一个集合中插入一个文档的时候,如何集合不存在,则会自动创建集合,通常我们使用隐式创建文档即可。

集合的删除

集合的删除命令(如果成功删除指定集合,drop()方法返回true,否则返回false)

db.collection.drop()
或
db.集合.drop()

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_基本命令_05

注意:在MongoDB中,集合只有在内容插入后才会创建!也就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

文档基本的CRUD(增删改查)

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

文档的插入

单个文档的插入:使用 insert() 或 save() 方法向集合中插入文档,其基本语法如下:

db.collection.insert(
	<document or array of documents>,
	{
		writeConcern: <documents>,
		ordered: <boolean>
	}
)

document:document or array 要插入到集合中的文档或文档数组(json格式)

writeConcern:document,表达书面关注的文档。

ordered:可选,为真则按顺序插入数组中的文档,为假则执行无须插入。

示例如下:(显示插入成功)

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_数据库_06

多个文档的插入:使用 insertMany() 方法向集合中插入文档,其基本语法如下:

db.collection.insertMany(
	<document or array of documents>,
	{
		writeConcern: <documents>,
		ordered: <boolean>
	}
)

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_经验分享_07

插入异常捕获使用 try catch :如果某条数据插入失败,将会终止插入,但已经插入成功的数据不会回滚掉。因为批量插入由于数据较多容易出现失败,因此,可以使用try catch进行异常捕捉处理,测试的时候可以不处理。如下:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_mongodb_08

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_经验分享_09

注意

1)comment集合如果不存在,则会隐式创建。
2)mongo中的数字,默认情况下是double类型,如果要存整型,必须使用函数NumberInt(整型数字),否则取出来就有问题了。
3)插入当前日期使用new Date()。
4)插入的数据没有指定_id,会自动生成主键值。
5)如果某字段没值,可以赋值为null,或不写该字段。

文档的基本查询

查询数据的命令如下:

db.collection.find(<query>,[projection])

Parameter

Type

Description

query

document

可选。使用查询运算符指定选择筛选器

projection

document

可选。指定要在与查询筛选器匹配的文档中返回的字段。

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_mongodb_10

如果想查询符合条件的数据,可以通过以下方式完成:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_数据库_11

如果想查询返回符合条件的第一条数据,可以通过以下方式:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_经验分享_12

如果想查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定字段)

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_经验分享_13

文档的更新

更新文档的语法如下:

db.collection.update(query, update, options)
或
db.collection.update(
	<query>,
	<update>,
	{
		upsert:<boolean>,
		multi:<boolean>,
		writeConcern:<document>,
		collation:<document>,
		arrayFilters:[<filterdocument1>,...],
		hint:<document|string>
	}
)

Parameter

Type

Description

query

document

更新的选择条件

update

document or pipeline

要应用的修改

upsert

boolean

可选,true为没有查询条件自动创建文档,false则不会插入新文档

multif

boolean

可选,true更新符合查询条件的多个文档,false则更新一个文档

writeConcern

document

可选,表示写问题的文档,抛出异常的级别

collation

document

可选,指定要用于操作的校对规则

arrayFilters

array

可选,用于确定要为数组字段上的更新操作修改哪些数据元素

hint

document or string

可选,指定用于支持查询谓词的索引的文档或字符串

覆盖修改:如果想覆盖修改可以执行以下命令:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_基本命令_14

局部修改:为了解决上面的问题,我们需要使用修改器 $set 来实现,命令如下:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_数据库_15

批量修改:更新所有自己设置条件的数据,如果不加后面的参数,则只能更新符合条件的第一条数据,命令如下:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_经验分享_16

列值增长的修改:如果我们想实现对某列值在原有值的基础上进行增加或减少,可使用 $inc 运算符来实现,命令如下:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_数据_17

删除文档

删除文档的语法结构如下:

db.集合名称.remove(条件)

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_基本命令_18

如果想删除所有数据,可以执行以下命令:

MongoDB 如何將空bsontimestamp排在前面 mongodb空口令_基本命令_19