模糊匹配
db.jcw_base_pillar.find({"name":/正则表达式/})
java中
Criteria criteria = new Criteria();
String reg = "^" + code + "[0-9]{2}$";
criteria.and("code").regex(Pattern.compile(reg));
数据操作
和JS一样操作
替换整个库
db.jcw_base_pillar.update({"_id":item._id},
{
"lineAttr":lineAttr
});
新增字段
db.jcw_base_pillar.update({"_id":item._id},
{$set:{
"lineAttr":lineAttr
}
});
移除字段
db.jcw_base_pillar.update({"_id":item._id},
{$unset:{
"lineId":""
}
});
更新字段
对象,数组都可使用点
db.jcw_base_pillar.update({"_id":item._id},
{$set:{
"line.lineCode":"123"
}
});
java中查询操作
criteria.and("deptTypeIds").is(type);//普通查询
criteria.and("siteId").in(query.getSiteList());//查询条件为数组时
criteria.and("tunnelAttr.tunnelId").is(tunnelId);//数据库字段为对象时
criteria.and("lineIdList").is(lineId);//数据库字段为数组时
其中多个or,and操作时
不能在一个Criteria 同时使用多个orOperator
例如(错误示范)
Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where("subject").regex(query.getKeyName()), Criteria.where("keyWords").regex(query.getKeyName()));
criteria.orOperator(Criteria.where("subject2").regex(query.getKeyName2()), Criteria.where("keyWords2").regex(query.getKeyName2()));
正确方式new一个Criteria用andOperator连接
Criteria criteria = new Criteria();
Criteria orCr1= new Criteria();
Criteria orCr2= new Criteria();
orCr1.orOperator(Criteria.where("subject").regex(query.getKeyName()), Criteria.where("keyWords").regex(query.getKeyName()));
orCr2.orOperator(Criteria.where("subject2").regex(query.getKeyName2()), Criteria.where("keyWords2").regex(query.getKeyName2()));
criteria.andOperator(orCr1,orCr2);
关联查询并新增字段,移除不需要的字段
db.jcw_base_pillar.find().forEach(
function(item) {
var lineAttr = {};
var trackList = [];
if(item.lineId!=null && item.lineId!=""){
db.loc_line.find({"_id":item.lineId}).forEach(
function(obj){
lineAttr={"lineId":obj._id,"lineName":obj.lineName,"lineCode":obj.lineCode};
}
)
}
if(item.trackIds!=null && item.trackIds.length > 0){
for(var i=0;i<item.trackIds.length;i++){
db.loc_track.find({"_id":item.trackIds[i]}).forEach(
function(obj){
var trackAttr = {"lineId":obj._id,"lineName":obj.lineName,"lineCode":obj.lineCode};
trackList.push(trackAttr);
}
)
}
}
db.jcw_base_pillar.update({"_id":item._id},
{$set:{
"lineAttr":lineAttr
,"trackList":trackList
}
});
db.jcw_base_pillar.update({"_id":item._id},
{$unset:{
"lineId":""
,"trackIds":""
}
});
}
)