MongoDB简介
- MongoDB是为了快速开发互联网Web应用而设计的数据库系统。
- MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分。
- MongoDB的数据抹香香是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON(BSON)。
下载安装MongoDB(Ubuntu)
安装MongoDB
sudo apt-get install mongodb
查看MongoDB版本
mongo -version
连接MongoDB
mongo
MongoDB的基本操作
基本概念
- 文档(document)类似于JS中的对象,在MongoDB中每一条数据都是一个文档。
- 集合(collection)集合就是一组文档,类似于数组,也就是集合是用来存放文档的,集合中存储的文档可以是各种各样,没有格式要求。
- 多个文档组成集合,多个集合组成数据库。
- 在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合。
基本指令
显示所有数据库
show databases
show dbs
进入到指定的数据库
use 数据库名
查看数据库集合
show collections
文档增删改查操作
- 向集合中插入文档(collection指的是集合名)
db.<collection>.insert(doc)
#向school数据库中的stus集合中插入一个学生对象{name:"孙悟空",age:18,gender:"男"}
db.stus.insert({name:"孙悟空",age:18,gender:"男"})
- 向集合中插入多个文档(使用数组)
db.stus.insert([
{name:"猪八戒",age:18,gender:"男"},
{name:"沙和尚",age:18,gender:"男"}
])
当我们想集合插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标识,_id我们可以自己指定,如果我们指定了,数据库就不会添加,_id必须确保唯一。
- 查询集合下的所有符合条件的文档,find()可以接收一个对象作为条件参数
db.<collection>.find()
db.stus.find({name:"孙悟空"}) #查询name为孙悟空的值
db.stus.find({age:18}).count() #获取一共有几个文档
- 替换文档对象
db.<collection>.update(查询条件,新对象)
db.stus.update({name:"沙和尚"},{age:100}) #替换为新对象
- 如果需要修改指定的属性,而不是替换,需要使用“修改操作符”,完成修改。
$set 可以用来修改文档中的指定属性。
db.stus.update({name:"孙悟空"},{$set:{age:100}})
$unset 可以用来删除文档的指定属性。
db.stus.update({name:"孙悟空"},{$unset:{age:"",gender:""}})
- 删除文档对象,remove可以根据传递的条件删除文档
如果remove中传递的是空,那么就会清空文档
db.<collection>.remove()
db.<collection>.deleteOne()
db.<collection>.deleteMany()
除了remove清空文档,也可以使用drop()直接删除集合
db.stus.drop() #直接删除集合
- 分页查询
db.collection.find().skip(20).limit(10) #跳过前20条数据,查询10条数据
sort排序
sort()可以用来指定文档的排序规则,sort()需要传递一个对象来指定排序规则,1表示升序,-1表示降序。
db.emp.find().sort({sal:-1})
db.emp.find({}).sort({sal:1,empno:-1})