【使用BasicDBObject操作Mongo】

1. 使用 BasicDBObject 查询 mongo 示例


import org.springframework.data.mongodb.core.MongoTemplate;

@Autowired(required = false)
private MongoTemplate mongoTemplate;

public List<DbaIncident> getDbaIncidentListByCriteria(Map<String, Object> params,Integer start, Integer limit) {
	List<DbaIncident> DbaIncidentList = new ArrayList<>();
	BasicDBObject query = new BasicDBObject();
    BasicDBList dbs = MongoDBUtils.matchClosureTime("alarm_time", start_time, end_time);
	//事件段约束
	query.append("$and", dbs);
    //模糊搜索
	BasicDBList dbList = new BasicDBList();
	if(tableName.equals("t_data_alarm_url")){
			dbList.add(new BasicDBObject("biz_name", new BasicDBObject("$regex", keyWord).append("$options", "$i")));
			dbList.add(new BasicDBObject("app_name", new BasicDBObject("$regex", keyWord).append("$options", "$i")));
			dbList.add(new BasicDBObject("server_ip", new BasicDBObject("$regex", keyWord).append("$options", "$i")));
	}
	BasicDBObject or = new BasicDBObject("$or", dbList);
	dbs.add(or);
	if (StringUtil.isNotEmpty(client_mac)) {
		//模糊匹配查询
		Pattern pattern = Pattern.compile("^.*"+client_mac+".*$", Pattern.CASE_INSENSITIVE);
		query.append("client_mac", pattern);
	}
    List<String> apiUuidList = new ArrayList();
    query.append("app_uuid",new BasicDBObject("$in", apiUuidList));

    MongoCollection<Document> dBCollection = mongoTemplate.getCollection(tableName);
	FindIterable<Document>  urlDocument= dBCollection.find(query).sort(new BasicDBObject("alarm_time", -1)).skip(start).limit(limit);
    MongoCursor<Document> iterator = urlDocument.iterator();
	while (iterator.hasNext()) {
		Document next = iterator.next();
		try {
			DbaIncident dbaIncident = JsonUtil.jsonToObject(next.toJson(), DbaIncident.class);
			DbaIncidentList.add(dbaIncident);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

2. 使用 BasicDBObject 更新 mongo 示例

当更新的字段不存在时,自动创建该字段,默认值为当前更新的值

updateOne
public Boolean updateSafeBulltinStatus(Map<String, Object> params) {
    	try {
			String tableName = "";
			String sourceType = String.valueOf(params.get("sourceType"));
			if ("database".equals(sourceType)) {
				Integer alarmTime = (Integer) params.get("alarmTime");
				tableName = "t_data_alarm_dbsql_" + DateUtil.intToStringDate(alarmTime, DateUtil.DEFAULT_DATE_FORMAT);
			}else if ("bussiness".equals(sourceType)) {
				tableName = "t_data_alarm_url";
			}
			BasicDBObject where = new BasicDBObject("alarm_id", String.valueOf(params.get("alarmId")));
			BasicDBObject set = new BasicDBObject("$set", new BasicDBObject("safeStatus", (Integer) params.get("safeStatus")));
			mongoTemplate.getCollection(tableName).updateOne(where, set);
		}catch (Exception e) {
			e.printStackTrace();
			return Boolean.FALSE;
		}
		return Boolean.TRUE;
	}

更新一调数据的说个字段值

	   
	    BasicDBObject where = new BasicDBObject("alarm_id", incidentUuid);
		BasicDBObject condition = new BasicDBObject("status",IncidentStatusEnum.CLOSED.getValue());
		condition.append("close_time",DateUtil.getCurrentTime());
		condition.append("close_cause",closeIncidentDto.getCloseCause());
		BasicDBObject set = new BasicDBObject("$set", condition );
	
	    String tableName = "";
		mongoTemplate.getCollection(tableName).updateOne(where, set);
updateMany更新多条记录

在 MongoDB 中,我们如果我们需要更新多条记录,既可以使用 update 函数,还可以使用 updateMany 函数,官方推荐使用 updateMany 函数。

mongoTemplate.getCollection(tableName).updateMany({"url" : "www.haicoder.net"}, {$set:{"url":"haicoder.net"}})
insertMany 插入多条数据
mongoTemplate.getCollection(tableName).insertMany([{"name":"haicoder", "url":"www.haicoder.net"},
	{"name":"HaiCoder", "url":"www.haicoder.net"},
	{"name":"golang", "url":"https://haicoder.net/golang/golang-tutorial.html"}])
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值