一. 基本概念
数据库(database)
集合(collection)
文档(document)
三者关系:数据库中包含多个集合,每个集合又包括多个文档
在Mongodb中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合
二. 基本指令
show databases(dbs) : 显示当前所有数据库
use 数据库名: 进入到指定的数据库中
db:表示的是当前所处的数据库
show collections:显示数据库中所有的集合
三. 数据库的CRUD(增删改查)的操作
1 向数据库中插入文档(增)
db.<collection>.insert(doc) : 向集合中插入一个或多个文档
当向集合插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id(该属性作为文档的唯一标识,在mysql中称为主键),_id我们可以自己指定,如果我们指定了数据就不会再添加了,如果自己指定_id,也必须确定它的唯一性
例:
向test库中的stus集合中插入一个新的学生对象
db.stus.insert({name:"孙悟空", age:"18", gender:"男"})
向test库中的stus集合中插入多个新的学生对象
db.stus.insert([
{name:"张三", age:"18"},
{name:"李四", age:"20"}
])
2. 查询
(1)db.<collection>.find()
find()用来查询集合中所有符合条件的文档,其可以接受一个对象作为条件参数
{}表示查询集合中所有文档,如:db.<collection>.find({})
注意,find()返回的是一个数组
{属性:值} 查询属性时指定值的文档 如db.stus.find({name: “张三”})
(2)db.<collection>.findone():
用来查询集合中符合条件的第一个文档
findone()返回的是一个文档对象
(3)db.<collection>.findmany():
用来查询集合中符合条件的所有文档
3. 修改
db.collection.update(查询条件,新对象),此处的新队向表示要修改的新内容
(1)update()默认情况下会使用新对象来替换旧的对象
如:db.stus.update({name:"张三"}, {age:33}),此语句会将name为张三的文档修改为只包括age:33的文档,并不会在源文档基础上只修改年龄属性
(2)如果要修改制定属性,而不是替换,需要使用“修改操作符”来完成修改
$set: 可以用来修改文档中的指定属性
$unset : 可以用来删除文档的指定属性
如:
db.stus.update( {name:"张三"}, {$set:{ name:“猪八戒” }} )
运行后,张三就被改成猪八戒了
(3)db.collection.updateMany():
同时修改多个符合条件的文档
(4)db.collection.updateOne()
修改一个符合条件的文档
4. 删除
(1)db.collection.remove() :
删除符合条件的所有文档(默认情况下回删除多个),如果remove()第二个参数传递一个true,则只会删除符合条件的文档,如:
db.stus.remove({age: 28}, true)
如果只传递一个空对象作为参数,则会删除集合中的所有文档
remove()也可以根据条件来删除文档,传递条件的方式和find()一致
(2)db.collection.deleteOne(): 删除一个文档
(3)db.collection.deleteMany(): 删除多个文档
(4)db.collection.drop() : 删除集合(此操作比删除文档效率高,因为删除文档是将文档一个一个的删除,此时直接删除集合)
(5)db.dropDatabase(): 删除数据库
5. 文档与文档键的关系
(1)一对一
(2)一对多或多对一
(3)多对多