学习主题:MongoDb
学习目标:
1.掌握mongodb正则查询
2.掌握mongodb聚合查询
3.掌握mongodb管道操作
4.掌握mongodb字符串操作
5.掌握mongodb算术运算
6.掌握mongodb日期处理
7.Java连击MongoDB数据库的方式
1.Mongodb的正则查询?回忆之前的正则知识
i m g w ^ KaTeX parse error: Expected '}', got 'EOF' at end of input: …合名称.find({字段名:{regex:正则表达式[, $options:正则选项]}});
正则表达式格式:/xxx/
正则选项:
i - 不区分大小写以匹配大小写的情况。
m - 对于包含锚点的模式(即^对于开始, KaTeX parse error: Undefined control sequence: \n at position 41: …字符串(可解析单字段中的换行符\̲n̲)。如果没有此选项,这些锚点将…regex 与
o
p
t
i
o
n
s
语
法
s
−
允
许
点
字
符
(
即
.
)
匹
配
包
括
换
行
符
在
内
的
所
有
字
符
。
需
要
options 语法 s - 允许点字符(即.)匹配包括换行符在内的所有字符。需要
options语法s−允许点字符(即.)匹配包括换行符在内的所有字符。需要regex 与$options 语法
i,m,x,s 可以组合使用。
2.Mongodb的聚合操作。
如何实现聚合查询,通过______函数完成。
语法格式是:。
$match $group $sort $sum $push KaTeX parse error: Expected '}', got 'EOF' at end of input: …ME.aggregate([{group:{_id:“
分
组
键
名
"
,
"
分组键名","
分组键名","分组键名”,…,别名:{聚合运算:"$运算列"}}},{条件筛选:{键名:{运算条件:运算值}}}])
$match :条件筛选
$group :分组,代表聚合的分组条件
$sort :排序
$sum :求和
$push :统计结果返回数组
$unwind :将数组字段拆分显示
3.什么是管道操作。
管道在 Unix 和 Linux 中一般用于将当前命令的输出结果作为下一个命令的参数。
MongoDB 的聚合管道将 MongoDB 文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
管道操作符是按照书写的顺序依次执行的,每个操作符都会接受一连串的文档,对这些文档做一些类型转换,最后将转换后的文档作为结果传递给下一个操作符(对于最后一个管道操作符,是将结果返回给客户端),称为流式工作方式。
管道操作符:
m
a
t
c
h
、
match、
match、group、
s
o
r
t
、
sort、
sort、limit、
s
k
i
p
、
skip、
skip、unwind
管道操作符,只能用于计算当前聚合管道的文档,不能处理其它的文档。
4.如何实现聚合投影约束,举例说明。
查询 dev 集合,将数组中的内容拆分显示,并只显示 title 键与 tags 键的值:
db.dev.aggregate([{
u
n
w
i
n
d
:
"
unwind:"
unwind:"tags"},{KaTeX parse error: Expected '}', got 'EOF' at end of input: …t:{_id:0,tags:"tags",title:"$title"}}])
5.字符串操作,回忆数据库中的字符串操作。
将内容变为大/小写
截取汉字和截取非中文是否有区别?
$toLower:将值转换为小写
$toUpper:将值转换为大写
$substr 只能匹配 ASCII 的数据,所以只能截取对应的英文
$substrCP 可以截取中文
6.算术运算符如何使用 语法结构是?
加法 减法 乘法 除法 取模 分别怎么表示
语法结构:
db.dev.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: match:{size:{ne:null}}},{KaTeX parse error: Expected '}', got 'EOF' at end of input: …w_Size:{ 运算符:["size",自定义数字]}}}])
加法:
a
d
d
减
法
:
add 减法:
add减法:subtract
乘法:
m
u
l
t
i
p
l
a
y
除
法
:
multiplay 除法:
multiplay除法:divide
取模:$mod
7.日期处理
插入日期的方式有几种,分别是。
查询日期的方式有几种,分别是。
显示年月日如何写代码。
显示年月日时分秒如何操作。
插入当前时间 db.dev.insert({date:new Date()})
插入指定日期
方式一:
db.dev.insert({time:new Date(“2018-05-01T14:20:23Z”)})
方式二:
db.dev.insert({time:ISODate(“2019-06-01T16:30:00Z”)})
查询时间
db.dev.find({time:{KaTeX parse error: Expected 'EOF', got '}' at position 35: …5-01T14:20:23")}̲}) 或者 db.dev.fi…gt:new Date(“2018-04-01”)}})
或者
db.dev.find({time:{$gt:ISODate(“2018-04-01”)}})
显示年月日,时分秒毫秒:
db.dev.aggregate([{KaTeX parse error: Expected 'EOF', got '}' at position 21: …:{name:"admin"}}̲,{project:{
年 份 :{
y
e
a
r
:
"
year:"
year:"birth"},
月份:{
m
o
n
t
h
:
"
month:"
month:"birth"},
日:{
d
a
y
O
f
M
o
n
t
h
:
"
dayOfMonth:"
dayOfMonth:"birth"},
时:{
h
o
u
r
:
"
hour:"
hour:"birth"},
分:{
m
i
n
u
t
e
:
"
minute:"
minute:"birth"},
秒:{
s
e
c
o
n
d
:
"
second:"
second:"birth"},
毫秒:{
m
i
l
l
i
s
e
c
o
n
d
:
"
millisecond:"
millisecond:"birth"}}}])
8.java连接MongoDB数据的方式有哪些,分别是什么?
1、工具类连接MongoDBUtil
2、认证连接MongoDBAuthUtil
3、池连MongoDBPoolUtil
4、认证池连MongoDBAuthPoolUtil
9.Java操作mongoDB集合
//创建mongodb集合
public static void createCollection(String dbName,String collName){
MongoDatabase database = getDatabase(dbName);
database.createCollection(collName);
}
//获取mongodb集合
public static MongoCollection getCollection(String dbName,String collName){
MongoDatabase database = getDatabase(dbName);
return database.getCollection(collName);
}
//删除mongodb集合
public static void dropCollection(MongoCollection collection){
collection.drop();
}