1. mongodb正则查询
2. mongodb聚合查询
3. mongodb管道操作
4. mongodb字符串操作
5. mongodb算术运算
6. mongodb日期处理
7. Java连击MongoDB数据库的方式
- Mongodb的正则查询?回忆之前的正则知识
i m g w ^ $都是什么意思?
i - 不区分大小写以匹配大小写的情况。
m - 多行查找,如果内容里面不存在换行符号(例如 n)或者条件上没有(start/end), 该选项没有任何效果
x - 设置 x 选项后,正则表达式中的非转义的空白字符将被忽略。需要$regex 与$options 语法
s - 允许点字符(即.)匹配包括换行符在内的所有字符。需要$regex 与$options 语法 i,m,x,s 可以组合使用。
g -全局(global)匹配
如果不带g,正则过程中字符串从左到右匹配,找到第一个符合条件的即匹配成功,返回,如果带g,则字符串从左到右,找到每个符合条件的都记录下来,知道字符串结尾位置
W -匹配字母或数字或下划线或汉字
^ -表示以...开头
$ -表示以...结尾
如何实现正则查询 语法规则是?
1 .db.集合名.find({key:/正则表达式/})
2 .db.集合名.find(key:{$regex:/正则表达式/})
- Mongodb的聚合操作。
如何实现聚合查询,通过_ aggregate()_____函数完成。
语法格式是:db.COLLECTION_NAME.aggregate([{$group:{_id:"$分组键名","$分组键名",.....,别名:{聚合 运算:"$运算列"}}},{条件筛选:{键名:{运算条件:运算值}}}])
$match $group $sort $sum $push $unwind分别代表什么意思。
1.$sum: 求和
1.查询 dev 集合中的所有 size 键中的值的总和。
2.对每一个 title 进行分组并计算每组中的 size 的总和
2.$match:条件筛选
1.where:
2.having:
3.$max:最大值
4.$min:最小值
5.$avg:求平均值
6.$push:查询 dev 集合,按照 size 分组并返回他们的 title,如果 size 相同则使用数组返回他们的 title
7.$unwind:查询 dev 集合,将数组中的内容拆分显示。
8.$project:使用$project 操作符做聚合投影操作。
9.$toLower:转换成小写/$toUpper:转换成大写
10.$concat:字符串连接
11.$substr:字符串截取:(中文:$substrCP/英文、数字:$substr)
12.算数运算符:$add(+)
13.算术运算符:$subtract(-)
14.算数运算符:$multiply(*)
15.算术运算符:$divide(/)
16.算术运算:$mod(%)
- 什么是管道操作。
管道在 Unix 和 Linux 中一般用于将当前命令的输出结果作为下一个命令的参数。 MongoDB 的聚合管道将 MongoDB 文档在一个管道处理完毕后将结果传递给下一个管 道处理。管道操作是可以重复的。
管道操作符是按照书写的顺序依次执行的,每个操作符都会接受一连串的文档,对这些 文档做一些类型转换,最后将转换后的文档作为结果传递给下一个操作符(对于最后一个管 道操作符,是将结果返回给客户端),称为流式工作方式。
管道操作符:$match、$group、$sort、$limit、$skip、$unwind 管道操作符,只能用于计算当前聚合管道的文档,不能处理其它的文档。
- 如何实现聚合投影约束,举例说明。
$match:条件筛选
1.where:
2.having:
3.$max:最大值
4.$min:最小值
5.$avg:求平均值
- 字符串操作,回忆数据库中的字符串操作。
将内容变为大/小写
$project:使用$project 操作符做聚合投影操作。
$toLower:转换成小写/$toUpper:转换成大写
截取汉字和截取非中文是否有区别?
截取非中文可以使用:$substr
截取中文要使用:$substrCP
- 算术运算符如何使用 语法结构是?
加法 乘法 除法 取模 分别怎么表示
算数运算符:$add(+)
算术运算符:$subtract(-)
算数运算符:$multiply(*)
算术运算符:$divide(/)
算术运算:$mod(%)
- 日期处理
插入日期的方式有几种,分别是。
1.new Date()
2.ISODate()
查询日期的方式有几种,分别是。
1.使用new Date()
2.使用ISODate()
显示年月日如何写代码。
取年份:$year
取月份:$month
取日期:$dayOfMonth
显示年月日时分秒如何操作。
$hour:取小时
$minute:取分钟
$millisecond:取秒
$dayOfWeek:星期日为 1,星期六为 7。
$week:全年的周计数从 0 开始。
$dayOfYear:全年中的第几天。
自定义日期格式:
- java连接MongoDB数据的方式有哪些,分别是什么?
1.直连方式(不支持用户认证)
public class MongoDBUtil {private static MongoClient client;static {if(client==null){client=new MongoClient("192.168.2.131",27017);}}//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName);}//获取数据库中的集合public static MongoCollection getConnection(String dbName,String collName){return getDatabase(dbName).getCollection(collName);}
}
2.直连方式(使用用户认证)
public class MongoDBAuthUtil {private static MongoClient client;static {if(client==null){//创建封装认证用户信息的对象MongoCredential mongoCredential=MongoCredential.createCredential("itsxt","develop","123456".toCharArray());//封装MongoDB的地址与端口ServerAddress address=new ServerAddress("192.168.2.131",27017);client=new MongoClient(address, Arrays.asList(mongoCredential));}}//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName);}//获取数据库中的集合public static MongoCollection getConnection(String dbName, String collName){return getDatabase(dbName).getCollection(collName);}
}
3.连池方式(不使用用户认证)
public class MongoDBPoolUtil {private static MongoClient client;static {if(client==null){MongoClientOptions.Builder builder=new MongoClientOptions.Builder();builder.connectionsPerHost(10);//设置每个链接地址的最大链接数builder.connectTimeout(5000);//设置链接超时时间builder.socketTimeout(5000);//设置读写超时时间ServerAddress address=new ServerAddress("192.168.2.131",27017);client=new MongoClient(address,builder.build());}}//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName);}//获取数据库中的集合public static MongoCollection getConnection(String dbName, String collName){return getDatabase(dbName).getCollection(collName);}
}
4.池连方式(使用用户认证)
public class MongoDBAuthPoolUtil {private static MongoClient client;static {if(client==null){MongoClientOptions.Builder builder=new MongoClientOptions.Builder();builder.connectionsPerHost(10);//设置每个链接地址的最大链接数builder.connectTimeout(5000);//设置链接超时时间builder.socketTimeout(5000);//设置读写超时时间//创建封装认证用户信息的对象MongoCredential mongoCredential=MongoCredential.createCredential("itsxt","develop","123456".toCharArray());//封装MongoDB的地址与端口ServerAddress address=new ServerAddress("192.168.2.131",27017);client=new MongoClient(address, Arrays.asList(mongoCredential),builder.build());}}//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName);}//获取数据库中的集合public static MongoCollection getConnection(String dbName, String collName){return getDatabase(dbName).getCollection(collName);}
}
- Java操作mongoDB集合
1.创建集合:
2.获取集合
3.删除集合