部分正则表达式:
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();
}
}