MongoDB基本语法

数据库(查看、创建、选择、删除)

查看: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} } ])
表示按性别分组查询男女各多少人,然后再升序,降序排列

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值