MongoDB第三天(正则,管道,聚合,字符串,算术,日期,java连接MongoDB)
部分正则表达式:
i:忽略大小写
m:多行查找
x:设置 x 选项后,正则表达式中的非转义的空白字符将被忽略。
s:允许点字符(即.)匹配包括换行符在内的所有字符。
w:匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。
|
查询 dev 集合中 title 字段以'S'开头的数据
查询 dev 集合中 title 字段以'g'结尾的数据
查询 dev 集合中 title 字段含有'g'的数据
查询 dev 集合中 title 字段以’s’开头且忽略大小写的数据
查询 dev 集合中 title 字段已'S'开头、'g'结尾的数据
查询 dev 集合中 title 字段以'S'或't'开头的数据
查询 dev 集合中 title 字段不以'S'开头的数据
查询 dev 集合中 title 字段不以'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.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")}})
显示年月日:
db.develop.aggregate([{$match:{ame:'admin'}},{$project:{年份:{$year:'$birth'},月份:{$month:'$birth'},日:{$dayOfMonth:'$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();
}
}

浙公网安备 33010602011771号