MongoDB 基本命令

# systemctl start mongod.service

默认端口:27017

启动mongodb :systemctl start mongod.service

停止mongodb :systemctl stop mongod.service

重启mongodb :systemctl restart mongod.service

查看mongodb :systemctl status mongod.service

设置mongodb开机自启动 :systemctl enable mongod.service

基本语句

库-表操作

show dbs;		展示所有库
use webflux;	使用webflux库

表达式

格式符号描述文字描述
:(冒号)=等于
$lt<小于
$lte<=小于等于
$gt>大于
$gte>=大于等于
$ne!=不等于
$inin()包含
$nin不包含

用户操作

# 切换到 admin 数据库(设置管理员用户名密码必须要切换到admin库才可以)
use admin

# 创建管理员
db.createUser({user:"chengqiubo",pwd:"123456",roles:["root"]})

# 查看所有用户信息
show users

# 删除用户
db.dropUser("chengqiubo")

数据库操作

# 创建数据库(有则使用,无则创建)
## use 数据库名

# 使用数据库
## use 数据库名

# 删除当前数据库
## db.dropDatabase()

# 查看当前使用的数据库
## db

# 展示所有数据库
## show dbs

数据集合操作

# 查看当前库的所有集合
## show tables

# 创建集合(固定集合达到最大值后会覆盖最早的文档)
# 字段		类型		描述
# capped	boolean	默认为false,指定集合是否为固定集合,若为固定集合则必须指定集合的大小(size)
# size		number	最大字节数,最小为256
# max			number	最大文档数量,只有当集合为固定集合并制定了size后才能进行指定文档数量
## db.createCollection('集合名',{})

# 删除集合
## db.集合名.drop()

查询

格式:
db.表名.find()
db.表名.find({字段名:{查询条件}})
db.表名.find({字段名:{查询条件}},{field1:1,field:0})
示例:
db.user.find({age:{$gte:10,$lte:100}})
基本查询

查询时字段名加不加引号或者双引号都可以,判断条件则需要根据具体的字段类型选择是否加单引号或双引号

# 查询所有
# sql: select * from table
# mongo: db.table.find()
条件查询
# 主键查询
## 使用主键查询时需要使用 ObjectId() 函数对传入的主键进行修饰才可以进行查询
db.user.find({
	'_id':ObjectId("636e1a73289d1b3a66bf489c")
})

# 查询指定字段或忽略指定字段
## 第二个大括号决定查询哪些字段,1为显示,除 _id 外其他字段均为默认不显示
## 所以若不需要 _id 字段请使用 _id:0
## sql: select id,name,age from table
## mongo: 
db.table.find(
	{
  },{
  	_id:0,
    name:1,
    age:1
  }
)

# 查询指定字段等于某值	 =
## sql: select * from table where id = 100
## mongo: 
db.table.find({
	id:100
})

# 查询指定字段大于某值 >
## sql: select * from table where age > 12
## mongo: 
db.table.find({
	age:{
 		$gt:12
  }
})

# 查询指定字段小于等于某值 <
## sql: select * from table where age <= 60
## mongo: 
db.table.find({
	age:{
 		$lte:60
   }
})

# 查询指定区间 between and 
## sql: select * from table where age between 20 and 80
## mongo: 
db.table.find({
	age:{
 		$gte:20,
    $lte:80
  }
})

# 查询指定区间外 or
## sql: 
select * from table where age < 18 or age > 80
## mongo: 
 db.table.find({
	$or:[
		{age:{$lt:18}},
		{age:{$gt:80}}
	]
 })

# and查询 and
## sql: select * from user where sex = 1 and age > 10
## mongo:
db.user.find({
	'sex':1,
  'age':{'$gt':10}
})

# 指定集合 in
## sql: select * from user where id in (1,2,3,5);
## mongo:
db.user.find({
	'id':{$in:[1,2,3,4,5]}
})

# 指定集合外 not in
## sql: select * from user where id not in (1,2,3)
## mongo:
db.user.find({
	'id':{'$nin':[1,2,3]}
})

# 模糊查询 %like%
## sql: select name,age from user where name like "%程%"
## mongo: 
db.user.find(
	{
		name:/程/
  ## 或使用 'name':{'$regex':/程/}
	},{
		_id:0,
		name:1,
		age:1
	}
)

# 模糊查询,头部匹配 like%
## sql: select * from user where name like "程%"
## mongo: 
db.user.find({
		name:/^程/
	})

# 模糊查询,尾部匹配 %like
## sql: select * from user where name like "%程"
## mongo: 
db.user.find({
		name:/程$/
	})

# 查询总数 count()
## sql:select count(id) from user where age > 18
## mongo:
db.user.find({		## 或使用 db.user.count({'age':{'$gt':18}})
	'age':{'$gt':18}
}).count()

# 排序 order by
## sql: select * from user order by id desc
## mongo: (升序:1,降序:-1)
db.user.find().sort({'id':-1})

# 分页 limit 
## sql: select * from user limit 20,10
## mongo:
db.user.find().skip(20).limit(10)

# 去重统计
## sql: select * fr
## mongo:
db.user.distinct(
	'name',											## 去重依据字段
 	{'age':{'$gte':15}},				## 筛选条件
  {'_id':0}										## 不需要显示的列
)
表达式操作符
常用表达式含义
$sum计算总和,{KaTeX parse error: Expected 'EOF', got '}' at position 7: sum: 1}̲表示返回总和×1的值(即总和的…sum: ‘$制定字段’}也能直接获取制定字段的值的总和
$avg平均值
$minmin
$maxmax
$push将结果文档中插入值到一个数组中
$first根据文档的排序获取第一个文档数据
$last同理,获取最后一个数据
管道操作符
$group将collection中的document分组,可用于统计结果
$match过滤数据,只输出符合结果的文档
$project修改输入文档的结构(例如重命名,增加、删除字段,创建结算结果等)
$sort将结果进行排序后输出
$limit限制管道输出的结果个数
$skip跳过制定数量的结果,并且返回剩下的结果
$unwind将数组类型的字段进行拆分

修改

覆盖修改
# 覆盖修改会导致数据丢失等同于用新的json覆盖旧的json
db.user.update({
	'id':NumberLong(111)
},{
	'age':NumberInt(16)
})
局部修改
# 局部修改,只会修改指定项目
db.user.update({
	'id':NumberLong(111)
},{
	'$set':{'age':NumberInt(16)}
 })
批量修改
# 批量修改,因为默认情况下 mongodb 只会修改符合条件的第一条数据,批量更新需要额外指定multi参数
db.user.update({
	'id':NumberLong(111)
},{
	'$set':{'age':NumberInt(16)}
 },{
   multi:true
 })
列值增长的修改
# 列值增长修改,可以对原有列的值进行修改,从而实现自增或自减
db.user.update({
	'name':'bilibili'
},{
	'$inc':{'age':NumberInt(-1)}
})

新增

# 新增单条数据,使用 insert()或save() 都可以
# db.table.insert({},{'writeConcern':'','ordered':true})
# {插入的数据},{插入时可选的性能级别,是否有序插入默认为true}
## sql: insert into user (name,age,sex) values ('zhangsan',18,'男')
## mongo:
db.user.insert({
	'name':'zhangsan',
  'age':NumberInt(18),			## 使用数字时默认为浮点型,可以选择用函数包一下转为整形
  'sex':'男'
})

# 新增多条数据 只能使用 insertMany()
## sql: insert into user (name,age,sex) values ('zhangsan',18,'男'),('lisi',16,'女')
## mongo:
db.user.insertMany({
	'name':'zhangsan',
  'age':NumberInt(18),			## 使用数字时默认为浮点型,可以选择用函数包一下转为整形
  'sex':'男'
},{
	'name':'zhangsan',
  'age':NumberInt(18),			## 使用数字时默认为浮点型,可以选择用函数包一下转为整形
  'sex':'男'
})
批量新增时异常处理
# mongodb 在进行操作时可以使用 try catch 操作
try{
	db.user.insertMany({
		'name':'zhangsan',
  	'age':NumberInt(18),			## 使用数字时默认为浮点型,可以选择用函数包一下转为整形
  	'sex':'男'
	},{
		'name':'zhangsan',
  	'age':NumberInt(18),			## 使用数字时默认为浮点型,可以选择用函数包一下转为整形
  	'sex':'男'
	});
} catch(e){
	print(e);
}

删除

# 删除指定条件
## sql: delete from user where name = 'bilibili'
## mongo: 
db.user.remove({
	'name':'bilibili'
})
# 删除所有
## sql: delete from user
## mongo: 
db.user.remove()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值