数据库(查看、创建、选择、删除)
查看:show databases
创建:有单独的语法,但是忽略 可以用隐式创建
选择:use 数据库名
删除:通过use先选中数据库,再通过db.dropDatabase()删除数据库
表(查看、创建、删除)
查看:show collections
创建:db.createCollection('表名') 也可以隐式创建
删除:db.表名.drop()
表数据的增删改查
增
增:1、先选择数据库:use test2
2、然后用插入语句:db.表名.insert(JSON数据)
如:db.c1.insert({uname:"Hellow",age:18})
**注意,这里的表名如果开始的时候没有创建的话,会自动隐式创建**
插入多条记录:db.表名.insert([
{key1:value1},
{key2:value2},
{key3:value3}
])
for循环插入:for(var i = 1; i <= 10; i++){db.表名.insert({key:value+i})}
删
删除语法:db.表名.remove(条件,[是否删除一条默认为false删除多条])
如:db.c2.remove({},true) //表示删除所以数据中的一条
db.c2.remove({}) //表示删除所有数据
改
修改基础语法:db.表名.update(条件,新数据[是否新增,是否修改多条])
如: db.c1.update({uname:"a1"},{uname:"a11"})
是否新增:指条件匹配不到数据则插入(true是插入,false默认否不插入)
如:db.c3.update({uname:"qe11"},{$set:{age:11}},true)
表示如果没有找到符合条件的数据就新增一条这样的数据
是否修改多条:指将匹配成功的数据都修改(true是,false默认否)
如:db.c3.update({uname:"qe1"},{$set:{age:666}},false,true)
如果想要全修改就要把条件改成:{}
如:db.c3.update({},{$set:{age:666}},false,true)
表示如果不符合条件不做修改,如果符合条件修改多条符合条件的数据
修改升级版:db.表名.update(条件 , { 修改器 : { 列名 : 值 } } )
如:db.c1.update({uname:"a2"},{$set:{uname:"a22"}})
修改器:($inc递增)($rename重命名列)($set修改列值)($unset删 除列)
查
查所有:db.表名.find()
只查询某个列:db.表名.find({},{列名:1})
如:db.c1.find({},{age:1})
当查询数据较多看起来不方便时可以用:db.表名.find().pretty() 格式化
查看除某列之外的列:db.表名.find({},{列名:0})
如:db.c1.find({},{age:0})
条件查询之等于什么:db.表名.find({列名:要等于的参数得值})
如:db.c1.find({age:5})
条件查询之逻辑运算符查询:db.表名.find({列名:{运算符:值}})
如:db.c1.find({age:{$gt:5}})
只获取某几个数据:db.表名.find({列名:{$in:[value1,value2,value3]}})
如:db.c1.find({age:{$in:[6,7,8]}})
升降序查询:db.表名.find().sort({列名:1或-1}) 1表示升序,-1表示降序
如:db.c1.find().sort({age:-1})或db.c1.find().sort({age:1})
分页查询:db.表名.find().skip(跳过第几条).limit(显示多少数据)
如:db.c1.find().skip(1).limit(3) 表示跳过第一条,显示3条数据。
也可以用排序分页:db.表名.find().sort({列名:1或-1}).skip(跳过第几条).limit(显示多少数据)
如:db.c1.find().sort({age:1}).skip(1).limit(3) 表示根据age正序查询,并且跳过一条数据,显示三条数据
实际项目中做分页应该是:db.表名.find().skip(当前页-1*显示多少数据).limit(显示多少数据)
如:db.c1.find().skip(3).limit(3) 表示第二页显示3条数据
聚合查询:db.表名.aggregate([
{管道:{表达式}}
....
])
常用管道:
$group 将集合中的文档分组,用于统计结果
$match 过滤数据,只要输出符合条件的数据
$sort 聚合数据进一步排序
$skip 跳过指定数据数
$limit 限制表数据返回数量
....
常用表达式:
$sum 总和 $sum:1同count表示统计
$avg 平均
$min 最小值
$max 最大值
....
**注意:_id不管怎么样都在**
一、数据库(查看、创建、选择、删除)
查看数据库:show databases
选择数据:use 数据库名称
注意:在MongoDB中选择不存在的数据库不会报错,会被隐式创建,后期当该数据库有数据时,系统会自动创建。
二、表(查看、创建、删除)
创建表:db.createCollection(‘表名’)
查看表:show collections
删除表:db.表名.drop()
删除数据库:
1、通过use先选中数据库
2、再通过db.dropDatabase()删除数据库
三、表数据的增删改查
新增:
1、先选择数据库:use test2
2、然后用插入语句:db.表名.insert(JSON数据);
如:db.c1.insert({uname:“Hellow”,age:18})
注意,这里的表名如果开始的时候没有创建的话,会自动隐式创建
插入多条记录:db.表名.insert([
{key:value1},
{key:value2},
{key:value3}
])
for循环插入:for(var i = 1; i <= 10; i++){db.表名.insert({key:value+i})}
因为MongoDB底层使用的是JS引擎,所以支持部分js语法
删除语法:db.表名.remove(条件,[是否删除一条默认为false删除多条])
修改基础语法:db.表名.update(条件,新数据[是否新增,是否修改多条])
是否新增:指条件匹配不到数据则插入(true是插入,false默认否不插入)
是否修改多条:指将匹配成功的数据都修改(true是,false默认否)
修改升级版:db.表名.update(条件 , { 修改器 : { 键 : 值 } } )
修改器:($inc递增)($rename重命名列)($set修改列值)($unset删除列)
但是上面这么写只能修改一条,如果是多条条件相同的语句,也就修改一条。
修改器的综合运用:
db.c1.update({uname:"你好世界"},{
$set:{uname:"沒有五官的企鵝"}, //修改列的值
$inc:{age:111}, //递增也就是增加111
$rename:{who:"sex"}, //重命名列
$unset:{other:true} //删除列
}
)
查询:db.表名.find()
当查询数据较多看起来不方便时可以用:db.表名.find().pretty() 格式化
只查询某个列:db.表名.find({},{列名:1})
注意:_id不管怎么样都在
查看除某列之外的列:db.表名.find({},{列名:0})
注意:_id不管怎么样都在
条件查询之等于什么:db.表名.find({key:要等于的参数得值})
条件查询之逻辑运算符查询:db.表名.find({key:{运算符:值}})
运算符:($gt大于)($gte大于等于)($lt小于)($lte小于等于)($ne不等于)($in 为in)($nin 为not in)
升降序查询:db.表名.find().sort({列名:1或-1}) 1表示升序,-1表示降序
分页查询:db.表名.find().skip(跳过第几条).limit(显示多少数据)
也可以用排序分页:db.c1.find().sort({列名:1或-1}).skip(跳过第几条).limit(显示多少数据)
聚合查询:db.表名.aggregate( [ { 管道: {表达式} } … ] )
常用管道:
$group 将集合中的文档分组,用于统计结果
$match 过滤数据,只要输出符合条件的数据
$sort 聚合数据进一步排序
$skip 跳过指定数据数
$limit 限制表数据返回数量
…
常用表达式:
$sum 总和 $sum:1同count表示统计
$avg 平均
$min 最小值
$max 最大值
…
示例:db.c2.aggregate([{ $group:{ _id:"$sex",rs: { $sum: "$age" } } }])
表示性别分组分别查出男女年龄的总和并加一列来展示总和数据。
rs就是个展示数据的列你写rs写abcd写啥都行这是自定义的,id是分组条件。
示例:db.c2.aggregate([{ $group:{ _id:"$sex",rs: { $sum:1 } } }])
示例:db.c2.aggregate([{ $group:{ _id: null, sl: {$sum:1}, avgage:{$avg:"$age"} } }])
表示查询所有人数和他们的平均年龄。_id:null表示不分组的意思
示例:
db.c2.aggregate([ { $group:{ _id: "$sex", rs: {$sum:1} } }, { $sort:{rs:1} } ])
db.c2.aggregate([ { $group:{ _id: "$sex", rs: {$sum:1} } }, { $sort:{rs:-1} } ])
表示按性别分组查询男女各多少人,然后再升序,降序排列