java mongo subtract_MongoDB第三天(正则,管道,聚合,字符串,算术,日期,java连接MongoDB)...

部分正则表达式:

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}}])

c1442dab16f47a03bc0a5da04da63240.png

字符串操作

toLower:小写

toUpper:大写

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

fc4d504d3f0afc92bb013b342c01f58c.png

$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'}}}])

36c648571b0f10a4b776fc3fefd504b5.png

显示时分秒毫秒:

{$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'}}}])

4e9603847212a50b6b90aa79e448158a.png

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();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值