简介

MongoDB是为快速开发互联网Web应用而设计的数据库系统。

MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分。

MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。(BSON)

基本概念

  • 数据库(database)

数据库是一个仓库,在仓库中可以存放集合。

  • 集合(collection)

集合类似于数组,在集合中可以存放文档。

  • 文档(document)

文档数据库中的最小单位,我们存储和操作的内容都是文档。

1646187222458
多个文档组成集合,多个集合组成数据库

基本指令

启动服务器:mongod --dbpath 路径 --port 端口号
启动客户端:mongo

创建数据库

use 数据库名
使用use时,如果数据库存在则会进入到相应的数据库,如果不存在则会自动创建
一旦进入数据库,则可以使用db来引用当前库

db.collection.insert(文档) 
向集合中插入文档,如果集合不存在则创建

db.createCollection()
创建一个新的集合

db.collection.drop()
删除集合

文档的增删改查

  • 插入文档
db.collection.insert ()

insert()可以用于向集合中添加一个或多个文档,可以传递一个对象,或一个数组。

可以将对象或数组中的对象添加进集合中

添加时如果集合或数据库不存在,会自动创建

插入的文档对象会默认添加_id属性,这个属性对应一个唯一的id,是文档的唯一标识

  • 删除文档
db.collection.remove()

remove()可以用来移除指定文档对象

方法接收一个查询文档作为参数,只有符合条件的文档才会被删除

删除数据是永久的,不能撤销

db.collection.drop()
删除集合
  • 修改文档
db.collection.update()

可以在update()中传递两个参数,一个是查询文档,一个是新的文档,这样符和条件的文档将会被新文档所替换

update()的第三个参数,用来指定是否使用upsert,默认为false

update()的第四个参数,用来指定是否同时修改多个文档,默认为false

修改器

使用update会将整个文档替换,但是大部分情况下我们是不需要这么做的

如果只需要对文档中的一部分进行更新时,可以使用更新修改器来进行。

$set

$set用来指定一个字段的值,如果这个字段不存在,则创建它。

语法:
db.test_coll.update(查询对象, {$set:更新对象});
$unset可以用来删除文档中一个不需要的字段,用法和set类似。

$unset

$inc

$inc用来增加已有键的值,或者该键不存在那就创建一个
$inc只能用于Number类型的值

$push

$addToSet

  • 查询文档
db.collection.find ()

MongoDB使用find()来对文档进行查询

find()需要一个查询文档作为参数,如果不传该参数,则会返回集合中的所有元素。

可以将查询条件以键值对的形式添加到查询文档中

查询条件:

l t 、 lt、 ltlte、 g t 、 gt、 gtgte、 n e 、 ne、 neor、 i n 、 in、 innin、 n o t 、 not、 notexists、$and

Mongoose

见pdf