MongoDB基础

MongoDB目录

    • MongoDB简介
    • 三个概念
    • 基本操作
    • 插入数据
    • 查询数据
    • 更新数据
    • 删除数据
    • 查询操作符
    • Sort排序

MongoDB简介

  • MongoDB是为快速开发互联网Web应用而设计的数据库系统
  • 极简、灵活,是web应用栈的一部分
  • MongoDB的数据模型是面向文档的,所谓文档就是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各式各样的JSON,(还可以存BSON,就是二进制流,也就是说可以存储图片的二进制流)

三个概念

  • 数据库(database)

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

  • 集合(collection)

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

  • 文档(document)

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

基本操作

  • 基本指令
show dbs:显示当前所有数据库

show database:显示当前所有数据库

use 数据库名:进入到指定的数据库中(可以不存在)

db:表示我们当前所处的数据库

show collections:显示我们数据库中所有的集合

插入数据

命令:db.collection.insert()
collection是集合的名字,使用方法如下:
db.stus.insert([
    {name:'pzf',age:18,gender:'man'},
    {name:'pzf',age:18,gender:'man'},
    {name:'pzf',age:18,gender:'man'},
])

可以插入单挑数据,也可以插入多条数据(用数组的方式)
插入之后执行db.collection.find()

db.stus.find()

MongoDB基础_第1张图片

可以看到插入的新数据。

  • _id是什么?
    当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动给文档添加_id。
    该属性用来作为文档的唯一标识。
    _id可以自己指定,如果我们指定了,数据库就不会再添加了,如果自己指定_id必须也确保唯一性。

插入的时候还可以使用语义化比较明确的两个方法
db.collection.insertOne():插入一个文档对象,传入一个对象
db.collection.insertMany():插入多个文档对象,传入一个对象数组

查询数据

使用命令:db.collection.find()

find()用来查询集合中所有符合条件的文档,可以接收一个对象作为条件参数。
示例如下:

db.stus.find({name:'pzf'})

MongoDB基础_第2张图片

{ }:表示所有文档
{ 属性:值 }:查询属性是指定值的文档,返回值是一个数组
db.collection.findOne():用来查询集合中符合条件的第一个文档,返回的是一个文档,也就是一个对象,所以可以在后面加上.字段名,来取数据,如:db.stus.findOne({name:‘pzf’}).name
db.stus.find({}).count():查询所有结果的数量

更新数据

命令:db.collection.update(查询条件,新对象)
update()默认情况下会使用新对象来替换旧对象
update()默认只会修改一个对象
所以一般我们不直接执行这个命令。
如果需要修改指定的属性,而不是替换,需要使用 “修改操作符” 来完成修改

$set:可以用来修改文档中的指定属性
$unset:可以用来删除文档的指定属性

如:

db.stus.update({name:'zyy'}, 
    {$set:{age:66}}, 
)

update默认只修改第一个符合条件的数据

db.collection.updateMany():同时修改多个符合条件的文档

db.collection.updateOne():修改一个符合条件的文档

db.collection.replaceOne():替换一个符合条件的文档

$push:用于向数组中添加一个新的元素

$addToSet:向数组中添加一个新元素(类似于向set集合中添加,如果数组中已经存在了该元素,则添加失败,因为不可重复)

db.stus.update({name:'pzf'}, 
    {$set:{age:99}}, 
    { multi: true, upsert: false}
)   

完整的update其实有三个对象参数,第三个对象表示:
对于upsert(默认为false):如果upsert=true,如果query找到了符合条件的行,则修改这些行,如果没有找到,则追加一行符合query和obj的行。如果upsert为false,找不到时,不追加。
对于multi(默认为false): 如果multi=true,则修改所有符合条件的行,否则只修改第一条符合条件的行。

删除数据

命令:db.collection.remove()
可以根据条件来删除文档,传递条件的方式和find()一样
能删除符合条件的所有文档,默认删除多个
如果第二个参数传递一个true,则只会删除一个
如果只传递一个{ }作为参数,则会删除集合中的所有文档

查询操作符

//查询numbers中num大于5000的文档
db.unmbers.find({num:{$gt:500}})

//查询numbers中num小于30的文档
db.unmbers.find({num:{$lt:500}})

//查询numbers中num大于40小于50的文档
db.numbers.find({num:{$gt:40,$lt:50}})

//查询numbers前10条的数据
db.numbers.find({num:{$lte:10}})

//limit()设置显示数据的上限
db.numbers.find().limit(10)

//查询numbers中第11条到20条的数据
	//skip()用于跳过指定数量的数据   skip( (页码-1)*每页显示的条数 ).limit(每页显示的条数)
	//MongoDB会自动调整limit()和skip()的位置
db.numbers.find().skip(10).limit(10)
db.numbers.find().limit(10).skip(10)

Sort排序

find()查询文档时,默认情况是按照_id的值进行升序排列

sort()可以用来指定文档的排序的规则,需要传递一个属性来指定排序规则,1表示升序,-1表示降序

db.users.find({}).sort({sale:1})
db.users.find({}).sort({sale:1,qq:1}) //先指定sale的升序 再qq的降序

MongoDB基础_第3张图片

你可能感兴趣的:(Node.js,前端,mongodb)