数据库是一个仓库,在仓库中可以存放集合。
集合类似于数组,在集合中可以存放文档。
文档数据库中的最小单位,我们存储和操作的内容都是文档。
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()
可以看到插入的新数据。
插入的时候还可以使用语义化比较明确的两个方法
db.collection.insertOne():插入一个文档对象,传入一个对象
db.collection.insertMany():插入多个文档对象,传入一个对象数组
使用命令:db.collection.find()
find()用来查询集合中所有符合条件的文档,可以接收一个对象作为条件参数。
示例如下:
db.stus.find({name:'pzf'})
{ }:表示所有文档
{ 属性:值 }:查询属性是指定值的文档,返回值是一个数组
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)
find()查询文档时,默认情况是按照_id的值进行升序排列
sort()可以用来指定文档的排序的规则,需要传递一个属性来指定排序规则,1表示升序,-1表示降序
db.users.find({}).sort({sale:1})
db.users.find({}).sort({sale:1,qq:1}) //先指定sale的升序 再qq的降序