部分正则表达式:

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. Linux 使用记录

      作为web程序员,该掌握的 linux 命令有哪些,稍微高级点的? - 刘志军的回答 - 知乎  https://www.zhihu.com/question/64063454/answer/21 ...

  2. poj 3461 Oulipo(KMP)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 49378   Accepted: 19617 Descript ...

  3. nyoj 276-比较字母大小 (顺序比较, 逆序输出)

    276-比较字母大小 内存限制:64MB 时间限制:3000ms 特判: No 通过数:13 提交数:15 难度:1 题目描述: 任意给出两个英文字母,比较它们的大小,规定26个英文字母A,B,C.. ...

  4. Django 自定义分页器

    为什么要实现分页? 在大部分网站中分页的功能都是必要的,尤其是在后台管理中分页更是不可或缺 分页能带给用户更好的体验,也能减轻服务器的压力 对于分页来说,有许多方法都可以实现 例如把数据全部读取出来在 ...

  5. Netflix 开源 Polynote:对标 Jupyter,一个笔记本运行多种语言

    谈到数据科学领域的开发工具,Jupyter 无疑是非常知名的一种.它具有灵活高效的特点,非常适合进行开发.调试.分享和教学.近日,Netflix(奈飞)居然也玩起了跨界,他们开源了一个名为 Polyn ...

  6. 基于Galera Cluster多主结构的Mysql高可用集群

    Galera Cluster特点 1.多主架构:真正的多点读写的集群,在任何时候读写数据,都是最新的 2.同步复制:集群不同节点之间数据同步,没有延迟,在数据库挂掉之后,数据不会丢失 3.并发复制:从 ...

  7. 2019-11-28:ssrf基础学习,笔记

    ssrf服务端请求伪造ssrf是一种由恶意访问者构造形成由服务端发起请求的一个安全漏洞,一般情况下,ssrf访问的目标是从外网无法访问的内部系统,正式因为它是由服务端发起的,所以它能请求到它相连而外网 ...

  8. 折腾笔记-计蒜客T1158-和为给定数AC记

    欢迎查看原题 1.简单题目叙述 蒜头君给出若干个整数,询问其中是否有一对数的和等于给定的数. 输入格式 共三行: 第一行是整数 ),表示有 n 个整数. 第二行是 n 个整数.整数的范围是在 0 到  ...

  9. HT Vue 集成

    (本文中 dataModel = dm = 数据容器, gv = graphView = g2d = 2D 视图) 初始化项目 使用 vue-cli 生成项目.生成注意以下几个问题 1. 建议手动配置 ...

  10. 修改Linux克隆的物理地址 和 IP地址

    实在不行就重新启动一下   才会改成 ech0 完成后文件配置环境变量 作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具.