import com.mongodb.CommandResult; //导入方法依赖的package包/类
@Override
public int update(String statement, Object parameter) {
logger.debug("Execute 'update' mongodb command. Statement '" + statement + "'.");
UpdateConfig config = (UpdateConfig) configuration.getConfig(statement);
if (config == null) {
throw new MongoDaoException(statement, "Update statement id '" + statement + "' not found.");
}
String collection = config.getCollection();
NodeEntry query = config.getQuery();
NodeEntry action = config.getAction();
DB db = factory.getDataSource().getDB();
DBCollection coll = db.getCollection(collection);
Map q = (Map) query.executorNode(configuration, parameter);
Map a = (Map) action.executorNode(configuration, parameter);
DBObject queryDbo = new BasicDBObject(q);
logger.debug("Execute 'update' mongodb command. Query '" + queryDbo + "'.");
DBObject actionDbo = (a == null) ? null : new BasicDBObject(a);
logger.debug("Execute 'update' mongodb command. Action '" + actionDbo + "'.");
WriteResult writeResult = coll.update(queryDbo, actionDbo, false, true, WriteConcern.SAFE);
CommandResult commandResult = writeResult.getLastError(WriteConcern.SAFE);
if (commandResult.getException() != null) {
throw new MongoDaoException(statement, "Execute 'update' mongodb command has exception. Cause: " + commandResult.getErrorMessage());
}
return writeResult.getN();
}