部分正则表达式:

i:忽略大小写

m:多行查找

x:设置 x 选项后,正则表达式中的非转义的空白字符将被忽略  

s:允许点字符(即.)匹配包括换行符在内的所有字符。

w:匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。

查询 dev 集合中 title 字段以'S'开头的数据

db.dev.find({title:/^S/});

db.dev.find({title:{$regex:/^S/}}) 

查询 dev 集合中 title 字段以'g'结尾的数据

db.stu.find({title:/g$/});

db.stu.find({title:{$regex:/g$/}}); 

查询 dev 集合中 title 字段含有'g'的数据

db.stu.find({title:/ing/});

db.stu.find({title:{$regex:/ing/}});

查询 dev 集合中 title 字段s开头且忽略大小写的数据

db.dev.find({title:/^S/i});

db.dev.find({title:{$regex:/^S/i}});

db.dev.find({title:{$regex:/^S/, $options:"i"}});

查询 dev 集合中 title 字段已'S'开头、'g'结尾的数据

db.dev.find({title:/^S.*g$/});

db.dev.find({title:{$regex:/^z.*n$/}});

查询 dev 集合中 title 字段以'S''t'开头的数据

db.dev.find({title:{$in:[/^S/, /^t/]}});

查询 dev 集合中 title 字段不以'S'开头的数据

db.dev.find({title:{$not:/^S/}}); 

查询 dev 集合中 title 字段不以'S''t'开头的数据

db.stu.find({title:{$nin:[/^S/, /^t/]}});

Mongodb的聚合操作

语法格式:

db.COLLECTION_NAME.aggregate([{$group:{_id:"$分组键名","$分组键名",.....,别名:{聚合运算:"$运算列"}}},{条件筛选:{键名:{运算条件:运算值}}}])

$match:条件筛选,经常和$group搭配使用,在group前面相当于,MySQL中的where在group的后面,相当于having。

$group:分组

$sort:相当于order by排序 1表示顺序,-1表示倒叙

$sum:表示求和

$unwind:数组拆分

管道操作:

当前的查询结果,会被下一条命令作为参数。类似传递,且管道操作时可以重复的,也是顺序执行

管道操作符:$match$group$sort$limit$skip$unwind

管道操作符,只能用于计算当前聚合管道的文档,不能处理其它的文档

实现聚合投影约束

$project 操作符:我们可以使用$project 操作符做聚合投影操作。

db.develop.aggregate([{$project:{_id:0,name:1,ame:1,age:1,title:1,time:1}}])

字符串操作

toLower:小写

toUpper:大写

db.develop.aggregate([{$project:{_id:0,Name:{$toUpper:'$name'}}}])

$Substr:只能截取匹配ascll码的数据,$substrCP 可以截取中文和字符串

 加法 乘法 除法  取模 :

加:

db.dev.aggregate([{$match:{size:{$ne:null}}},{$project:{_id:0,title:1,New_Size:{$add:["$si

ze",1]}}}])

减:

db.dev.aggregate([{$match:{size:{$ne:null}}},{$project:{_id:0,title:1,New_Size:{$subtract:[

"$size",1]}}}])

 

db.dev.aggregate([{$match:{size:{$ne:null}}},{$project:{_id:0,title:1,New_Size:{$multiply:

["$size",2]}}}]) 

db.dev.aggregate([{$match:{size:{$ne:null}}},{$project:{_id:0,title:1,New_Size:{$divide:["

$size",2]}}}])

取余 

db.dev.aggregate([{$match:{size:{$ne:null}}},{$project:{_id:0,title:1,New_Size:{$mod:["$s

ize",2]}}}])

日期处理

俩种插入日期的方式:

方式一:

db.dev.insert({time:new Date("2018-05-01T14:20:23Z")}) 

new Date("2018-05-01T14:20:23Z"):创建时间对象,日期格式为 yyyy-MM-ddThh:mm:ss

方式二:

db.dev.insert({time:ISODate("2019-06-01T16:30:00Z")})

ISODate("2019-06-01T16:30:00Z"):

查询日期的方式

第一种:

db.dev.find({time:{$eq:new Date("2018-05-01T14:20:23")}})

第二种:

db.dev.find({time:{$gt:new Date("2018-04-01")}}) 

第三种:

db.dev.find({time:{$eq:ISODate("2018-05-01T14:20:23")}})

显示年月日:

{$year:"$birth"}:年份
{$month:"$birth"}:月份
{$dayOfMonth:"$birth"}:日期
db.develop.aggregate([{$match:{ame:'admin'}},{$project:{年份:{$year:'$birth'},月份:{$month:'$birth'},日:{$dayOfMonth:'$birth'}}}])

显示时分秒毫秒:

{$hour:"$birth"}:小时
{$minute:"$birth"}:分钟
{$second:"$birth"}:秒
{$millisecond:"$birth"}:毫秒
db.develop.aggregate([{$match:{ame:'admin'}},{$project:{年份:{$year:'$birth'},月份:{$month:'$birth'},日:{$dayOfMonth:'$birth'},时:{$hour:'$birth'},分:{$minute:'$birth'},秒:{$millisecond:'$birth'}}}])

java连接MongoDB数据的方式

直连:

package com.bjsxt.mongodbdemo;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase; public class MongoDBUtil { private static MongoClient client=null;
static {
if (client==null){
client=new MongoClient("192.168.181.132",27017);
} } //获取MongoDB数据库
public static MongoDatabase getDatebase(String dbName){
return client.getDatabase(dbName);
} //获取MongoDB集合
public static MongoCollection getCollection(String dbName,String collName){
MongoDatabase database=getDatebase(dbName);
return database.getCollection(collName);
}
}

直连认证:

package com.bjsxt.mongodbdemo;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase; import java.util.Arrays; /**
* 创建MongoDB拦截-用户认证
*/
public class MongoDBAuthUtil {
private static MongoClient client=null;
static {
if (client==null){
//创建一个用户封装认证信息
MongoCredential credential = MongoCredential.createCredential("bjsxt", "develop", "bjsxt".toCharArray()); //封装MongoDB的地址与端口
ServerAddress address=new ServerAddress("192.168.181.132",27017);
client=new MongoClient(address, Arrays.asList(credential)); } } //获取MongoDB数据库
public static MongoDatabase getDatebase(String dbName){
return client.getDatabase(dbName);
} //获取MongoDB集合
public static MongoCollection getCollection(String dbName, String collName){
MongoDatabase database=getDatebase(dbName);
return database.getCollection(collName);
}
}

池连:

package com.bjsxt.mongodbdemo;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase; import java.util.Arrays; /**
* 池连
*/
public class MongoDBPoolUtil { private static MongoClient client=null;
static {
if (client==null){
MongoClientOptions.Builder builder=new MongoClientOptions.Builder();
builder.connectionsPerHost(10);//每个地址的最大连接数 builder.connectTimeout(5000);//连接超时时间 builder.socketTimeout(5000);//读写操作超时时间 //封装MongoDB的地址与端口
ServerAddress address=new ServerAddress("192.168.181.132",27017);
client=new MongoClient(address, builder.build()); } } //获取MongoDB数据库
public static MongoDatabase getDatebase(String dbName){
return client.getDatabase(dbName);
} //获取MongoDB集合
public static MongoCollection getCollection(String dbName, String collName){
MongoDatabase database=getDatebase(dbName);
return database.getCollection(collName);
}
}

池连认证:

package com.bjsxt.mongodbdemo;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase; public class MongoDBPoolAuthUtil {
private static MongoClient client=null;
static {
if (client==null){
MongoClientOptions.Builder builder=new MongoClientOptions.Builder();
builder.connectionsPerHost(10);//每个地址的最大连接数 builder.connectTimeout(5000);//连接超时时间 builder.socketTimeout(5000);//读写操作超时时间 //创建一个用户封装认证信息
MongoCredential credential = MongoCredential.createCredential("bjsxt", "admin", "bjsxt".toCharArray());
//封装MongoDB的地址与端口
ServerAddress address=new ServerAddress("192.168.181.132",27017);
client=new MongoClient(address,credential,builder.build()); } } //获取MongoDB数据库
public static MongoDatabase getDatebase(String dbName){
return client.getDatabase(dbName);
} //获取MongoDB集合
public static MongoCollection getCollection(String dbName, String collName){
MongoDatabase database=getDatebase(dbName);
return database.getCollection(collName);
} //创建集合
public static void createCollection(String dbName,String collName){
MongoDatabase database=getDatebase(dbName);
database.createCollection(collName);
} //删除集合
public static void dropCollection(MongoCollection collection){
collection.drop();
}
}

MongoDB第三天(正则,管道,聚合,字符串,算术,日期,java连接MongoDB)的更多相关文章

  1. java 连接 mongodb 及使用

    MongoDB是当今非常流行的一款NoSQL数据库,本文介绍如何使用MongoDB的Java驱动来操作MongoDB. 一.引入MongoDB Java Driver包 如果需要操作MongoDB的J ...

  2. Java 连接MongoDB

    1.驱动 通过java连接MongoDB需要一个java版的驱动 下载地址:http://mongodb.github.io/mongo-java-driver/ 2.连接MongoDB 通过 com ...

  3. java连接mongodb数据库

    最近毕设需要用到这个数据库.然而又不会,没办法,只能上网学习学习. 记录一下java连接mongodb数据库的简单方法.这里只是记录一下学习.熟悉一下CURD方法. 但是毕业用到的是SpringBoo ...

  4. mongodb在Windows安装配置及遇到的问题、java连接测试

    一.安装 1.访问mongodb的官网http://www.mongodb.org/downloads下载64bit的包,我下载的是mongodb-win32-x86_64-2008plus-ssl- ...

  5. java连接MongoDB查询导出为excel表格

    背景 因为项目需求.每一个星期须要统计每一个公众号7天的訪问数,月底就须要统计一个月的訪问数,40多个公众号.每次手动统计都须要花费1个小时,总之是一项无技术耗时耗神的手工活. 于是.想写个程序来统计 ...

  6. java连接mongodb的一个奇葩问题及奇葩解决方式

    昨天在eclipse中编写代码,本来连接mongodb进行各项操作都是正常的,但是有一会儿突然之间就没法连接了,还一直抱错,错误如下: 信息: Cluster created with setting ...

  7. Java连接MongoDB报错“java.lang.IllegalArgumentException: clusterListener can not be null”的解决办法

    我使用的MongoDB版本是3.6.9. 下面是一个很基础的示例代码,功能就是连接MongoDB: package com.zifeiy.snowflake.handle.etl.mongodb; i ...

  8. Java 连接MongoDB集群的几种方式

    先决条件 先运行mongodb肯定是必须的,然后导入以下包: import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; im ...

  9. MongoDB Java连接---MongoDB基础用法(四)

    MongoDB 连接 标准 URI 连接语法: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN ...

随机推荐

  1. docker搭建本地registry

    第一步:拉取registry镜像 [root@localhost iso]# docker image pull registry Using default tag: latest latest: ...

  2. 本周授课内容:http,https,Tomcat,servlet

    https:https是基于安全套接字的http协议,也可以理解为是http+ssl/tls(数字证书)的组合 http和https的区别: HTTP 的 URL 以 http:// 开头,而 HTT ...

  3. jsp页面不乱码,外部引用的js弹出对话框乱码

    今天在做一个课程设计的时候,写到一个界面注册,在用js判断数据的正确性时,碰到了一个js弹出框的乱码问题.在网上找寻了很久,也找了很多博客看,但是发现怎么样都不能解决我的问题,下面给出几个比较经典的解 ...

  4. 小白学 Python(24):Excel 基础操作(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  5. 网络权重初始化方法总结(下):Lecun、Xavier与He Kaiming

    目录 权重初始化最佳实践 期望与方差的相关性质 全连接层方差分析 tanh下的初始化方法 Lecun 1998 Xavier 2010 ReLU/PReLU下的初始化方法 He 2015 for Re ...

  6. runlevel init

    init概念存在于cnetos7以下,配置文件/etc/inittab init 以及 文本和图形界面切换(可以用ctrl+alt+n 或者 init3 5切换,不是重启切) 命令init N 0 关 ...

  7. D^3ctf两道 pwn

    这次 的D^3ctf 又是给吊打 难顶... 所以题都是赛后解出来的,在这感谢Peanuts师傅 unprintableV 看看保护: 看看伪代码,其实代码很少 void __cdecl menu() ...

  8. 三维目标检测论文阅读:Deep Continuous Fusion for Multi-Sensor 3D Object Detection

    题目:Deep Continuous Fusion for Multi-Sensor 3D Object Detection 来自:Uber: Ming Liang Note: 没有代码,主要看思想吧 ...

  9. ASP.NET Core MVC+EF Core项目实战

    项目背景 本项目参考于<Pro Entity Framework Core 2 for ASP.NET Core MVC>一书,项目内容为party邀请答复. 新建项目 本项目开发工具为V ...

  10. 剑指Offer-29.最小的K个数(C++/Java)

    题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 分析: 最先想到的是将数组升序排列,返回前k个元素.不过排序的话效率 ...