How to update multiple column with increment column in mongo db in Java
Introduction
db.collection.update(query, update, options)
Modifies an existing document or documents in a collection. The method can modify specific fields of an existing document or documents or replace an existing document entirely, depending on the update parameter.
By default, the update() method updates a single document. Set the Multi Parameter to update all documents that match the query criteria.
The update() method has the following form:
For more understanding : click
/*logger.debug("Inside updateUserSumInfoPermissionData method");
boolean success = false;
MongoTemplate spsMongoTemplate = MongoConnectionManagerImpl.getMongoTemplate(IMongoTemplate.SPS_MONGO_TEMPLATE);
DBCollection dbCollection = spsMongoTemplate.getCollection(UserPermissionData.collectionName);
DBObject query = new BasicDBObject();
BasicDBObject dbObject = new BasicDBObject();
//query.put(UserPermissionData.entrySource, EntrySource.ADMIN.getEntrySource());
query.put(UserPermissionData.cobrandId,cobrandId);
query.put(UserPermissionData.userId, userId);
if(siteId != -1 && sumInfoId == -1){
query.put(UserPermissionData.siteId, siteId);
dbObject.put(UserPermissionData.siteId, siteId);
}else if(siteId == -1 && sumInfoId != -1){
query.put(UserPermissionData.sumInfoId, sumInfoId);
dbObject.put(UserPermissionData.sumInfoId, sumInfoId);
}else{
query.put(UserPermissionData.sumInfoId, new BasicDBObject(IMongoQueryConstants.EXISTS, false));
query.put(UserPermissionData.siteId, new BasicDBObject(IMongoQueryConstants.EXISTS, false));
}
query.put("expiry", new BasicDBObject(IMongoQueryConstants.GREATER_THAN_OR_EQUAL, new Date()));
dbObject.put(UserPermissionData.entrySource, EntrySource.SYSTEM.getEntrySource());
dbObject.put(UserPermissionData.cobrandId, cobrandId);
dbObject.put(UserPermissionData.userId, userId);
if(allowed){
dbObject.put(UserPermissionData.allowed, true);
dbObject.put(UserPermissionData.action, action);
}else{
dbObject.put(UserPermissionData.allowed, false);
dbObject.put(UserPermissionData.action,null);
}
DBObject modifiedObject =new BasicDBObject();
modifiedObject
.put("$set",
new BasicDBObject()
.append(UserPermissionData.allowed, allowed)
.append(UserPermissionData.expiry, expiry));
if(blockFlag){
BasicDBObject incrObject = new BasicDBObject();
incrObject.append(UserPermissionData.consecutive, 1);
modifiedObject.put("$inc", incrObject);
}
dbObject.put(UserPermissionData.expiry, expiry);
dbObject.put(UserPermissionData.consecutive, 0);
logger.debug("Query : "+query+", Obj : "+dbObject);
WriteResult wr = null;
DBCursor cursor = dbCollection.find(query);
if (cursor!=null && cursor.size()>0){
wr = dbCollection.update(query, modifiedObject, false, false);
}else{
try{
wr = dbCollection.insert(dbObject);
success = true;
}catch(DuplicateKeyException e){
wr = dbCollection.update(query, dbObject, false, false);
success = wr.getN() > 0;
if(!success){
logger.fatal("Oops!! Something went wrong neither able to update nor insert for query "+ query+",object "+dbObject);
}
}
}