文章目录
一、安装与配置
二、基本概念
三、基本指令
四、数据库的CRUD(增删改查)操作
插入文档
db.<collection>.insert()
- 向集合中插入一个或多个文档
- 当我们向集合中插入文档时,如果没有给文档指定
_id
属性,则数据库会自动为文档添加_id
,该属性用来作为文档的唯一标识 _id
我们可以自己指定,如果我们指定了数据库就不会再添加了,但自己指定也必须确保它的唯一性
db.stus.insert({
name:"猪八戒", age:28, gender:"男"})
db.stus.insert([
{
name:"沙和尚", age:38, gender:"男"},
{
name:"白骨精", age:18, gender:"女"},
{
name:"蜘蛛精", age:16, gender:"女"}
])
db.stus.insert({
_id:"hello", name:"猪八戒", age:28, gender:"男"})
db.<collection>.insertOne()
- 将单个文档插入集合中。
db.<collection>.insertMany()
- 可以将多个文档插入一个集合中。将文档数组传递给该方法。
查询文档
db.<collection>.find()
- find()用来查询集合中所有符合条件的文档
- find()可以接收一个对象作为条件参数
{}
表示查询集合中所有的文档{属性: 值}
查询属性是指定值的文档
- find()返回的是一个数组
db.stus.find({
_id:"hello"})
db.stus.find({
age:16, name:"白骨精"})
db.stus.find({
age:16})[0]
db.<collection>.findOne()
- 用来查询集合中符合条件的第一个文档
- findOne()返回的是一个文档对象
db.<collection>.find({}).count()
- 查询所有结果的数量
修改文档
db.<collection>.update(查询对象, 要修改的新对象)
- update()默认情况下会使用新对象来替换旧对象
- 如果需要修改指定的属性而不是替换,则需要使用“修改操作符”来完成修改
$set
可以用来修改文档中的指定属性。$unset
可以用来删除文档中的指定属性。$push
用于向数组中添加一个新的元素,它不会考虑元素是否重复。$addToSet
用于向数组中添加一个新的元素,如果数组中已经存在该元素,则不会添加。
- update()默认只会修改一个
db.stus.update({
name:"沙和尚"}, {
age:28}) // 基本不用, 因为这是整体替换操作
db.stus.update(
{
age:26},
{
$set:{
gender:"男",
address:"流沙河"
} // 匹配到第一个后只修改对应的属性而不是整体替换,如果没有此属性,则新增
}
)
db.stus.update(
{
age:26},
{
$unset:{
address:1
} // 匹配到第一个后只删除对应的属性,此时的属性值就可以任意写
}
)
db.stus.update(
{
age:26},
{
$set:{
gender:"男",
address:"流沙河"
} // 匹配到所有满足条件的文档后只修改对应的属性而不是整体替换,如果没有此属性,则新增
},
{
multi:true // 可以匹配多个
}
)
db.<collection>.updateMany()
- 同时修改多个符合条件的文档
db.stus.updateMany(
{
age:26},
{
$set:{
gender:"男",
address:"流沙河"
} // 匹配到所有满足条件的文档后只修改对应的属性而不是整体替换,如果没有此属性,则新增
}
)
db.<collection>.updateOne()
- 修改一个符合条件的文档
db.<collection>.replaceOne()
- 替换一个文档
删除文档
db.<collection>.remove()
- remove()可以根据条件来删除文档,传递条件的方式和find()一样
- 删除符合条件的所有文档(默认情况下会删除多个)
- 如果remove()第二个参数传递一个true,则只会删除一个
- 如果remove()只传递一个空对象作为参数,则会删除集合中的所有文档
db.stus.remove({
_id:123456})
db.stus.remove({
age:28}, true)
// 清空集合(性能略差,因为是一个个删,删完集合还存在)
db.stus.remove({
}