MongoDB入门
连接MongoDB
- 打开cmd 输入mongo 连接MongoDB,出现 >
数据库(database)
- 数据库是一个仓库,在仓库中可以存放集合。
- 集合(collection):集合类似于数组,在集合中可以存放文档
- 文档(document):文档是数据库中的最小单位,我们存储和操作的内容都是文档
- 在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合
- 文档(document):文档是数据库中的最小单位,我们存储和操作的内容都是文档
- 集合(collection):集合类似于数组,在集合中可以存放文档
数据库的服务器
- 服务器用来保存数据
数据库的客户端
- 客户端用来操作服务器,对数据进行增删改查的操作。
- mongo 用来启动客户端
基本指令
show dbs // 显示当前所有数据库
use 数据库名 // 进入到指定数据库中
db // 表示当前所处的数据库
show collections // 显示数据库中所有集合
数据库的 CRUD(增删改查)的操作
向数据库中插入文档(增)
- db.
<collection>
.insert(doc)- 向集合中插入一个文档
- 例子:向test数据库中的,stus集合中插入一个新的学生对象
{name: "码农权", age: 18, gender: 男}
db.stus.insert(
{name: "码农权", age: 18, gender: 男})
- db.
<collection>
.find()- 查询当前集合中的所有文档
查询
db.<collection>.find()
- find() 用来查询集合中所有符合条件的文档
- find() 可以接受一个对象作为条件参数
- {} 表示查询集合中所有的文档
- {属性:值} 查询属性是指定的文档
- find() 返回的是一个数组
db.<collection>.findOne()
- 用来查询集合中符合条件的第一个文档
- findOne() 返回的是文档对象
db.<collection>.find().count()
- 查询所有结果的数量
db.<collection>.find().limit()
- 设置显示数据的上限
操作符:
$lt
$gt
$or
例如:查询numbers集合中num>10的数据
db.numbers.find({
num: {
$gt: 10
}
})
查询工资小于1000或大于2500的员工
db.emp.find({
$or: [
{
salary: {
$lt: 1000
}
},
{
salary: {
$gt: 2500
}
}
]
})
db.<collection>.find().skip()
- 用于跳过指定数量的数据
// limit() 和skip() 这两个函数可以配合分页
skip( ( 页码-1 ) * 每页显示的条数).limit(每页显示的条数)
查询文档时、默认情况是按照_id的值进行排列(升序),在查询时,可以在第二个参数的位置来设置查询结果的 投影(展示想展示的信息,、0不展示,1展示)
sort() 可以用来指定文档的排序规则,sort() 需要传递一个对象指定排序规则 1升序 0降序
例如该集合
_id: 001 name: 张三 score: 70
_id: 002 name: 李四 score: 80
_id: 003 name: 王五 score: 75
需求:查询 students集合中 显示name和score 并将分数(score)进行升序
db.students.find({},{
_id: 0,
name: 1,
score: 1
}).sort({
score: 1
})
- 注
- MongoDB支持直接通过内嵌文档的属性进行查询,如果要查询内嵌文档则可以通过 . 的形式来匹配,如果要通过内嵌文档来对文档进行查询,此时属性名必须使用引号
例如以下结构 { "_id" : ObjectId("622f4e30a890791dcc0769d8"), "hobby" : { "cities" : ["beijing", "hanghai", "shenzhen"], "movies" : ["sanguo", "hero"] } } 需求:查询喜欢电影 hero 的文档 db.collection.find({"hobby.movies" : "hero"})
修改
db.<collection>.update(查询条件,新对象)
- update() 默认情况下会使用新对象替换掉旧的对象
- 如果需要修改指定的属性,而不是替换,需要使用“修改操作符”来完成修改
- $set 可以用来修改文档中的指定属性
- $unset 可以用来删除文档指定属性
- $push 向数组中添加一个新的元素
- $addToSet 向数组中添加一个新元素,如果数组中已经存在该元素,则不会加
- $inc 自增
为分数低于80分的同学增加20分
db.students.update({
score: {
$lt: 80
}
}, {
$inc: {
score: 20
}
})
- update()默认只会修改一个 和 updateOne一样的
db.collection.updateMany()
- 同时修改多个符合条件的文档
db.collection.updateOne()
- 修改一个符合条件的文档
删除
db.<collection>.remove()
- 删除符合条件的所有文档(默认情况下会删除多个)
- 如果remove() 第二个参数传递一个true,则只会删除一个
- 删除符合条件的所有文档(默认情况下会删除多个)
db.<collection>.deleteOne
- 删除符合条件的一个文档
db.<collection>.deleteMany
- 删除符合条件的所有文档
db.<collection>.drop()
- 删除集合
db.dropdatabase()
- 删除数据库