Mongodb基础操作

模糊匹配

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":""
					}
		});
    }
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值