//定时任务
public void updateMongoDbOldData() {
final MongoCollection<Document> coll = MongoDBUtil.getCollection();int num = ConstantNumber.FIVE_THOUSAND;// 5000
// 默认20次循环=分页
for (int i = 0; i < ConstantNumber.NUM_TWENTY.intValue(); i++) {
// 根据ID顺序排序
FindIterable<Document> iterable = coll.find()
.sort(new BasicDBObject("_id", 1));
logger.info("updateMongoDbOldData_i:" + i);
// 限制一次性取5000
iterable.limit(num).skip(i * num).forEach(new Block<Document>() {
public void apply(final Document document) {
if (null == document) {
logger.info(
"updateMongoDbOldData_apply document is null");
} else {
// 长度为13位,表示是老数据
if (13 == document.size()) {
String isliCode = document.getString("isliCode");
if (StringUtils.isNotBlank(isliCode)
&& isliCode.length() > 20) {
updateMongoDbByIsliCode(coll, isliCode);
}
} else {
logger.info("updateMongoDbOldData_document.size:"
+ document.size());
}
}
}
});
}
}
/**
* 更新MongoDb老数据,增加publisherId和serviceProviderId两个字段
* @Description: TODO
* @param coll
* @param id
* @param isliCode
*
* Author: wujianh
* Date: 2017年11月21日 下午4:35:43
* Version: 1.0
*/
private void updateMongoDbByIsliCode(MongoCollection<Document> coll,
String isliCode) {
logger.info("updateMongoDbByIsliCode_isliCode:" + isliCode);
try {
Bson filter = Filters.eq("isliCode", isliCode);
Document newDoc = new Document();
StatisIsliCode statisIsliCode = getInfoByIsliCode(isliCode);
if (null != statisIsliCode) {
String publisherId = statisIsliCode.getPublisherId();
String serviceProviderId = statisIsliCode
.getServiceProviderId();
if (StringUtils.isNotBlank(publisherId)) {
newDoc.put("publisherId", publisherId);
} else {
newDoc.put("publisherId", "");
}
if (StringUtils.isNotBlank(serviceProviderId)) {
newDoc.put("serviceProviderId", serviceProviderId);
} else {
newDoc.put("serviceProviderId", "");
}
// 新增加两个字段
coll.updateMany(filter, new Document("$set", newDoc));
logger.info("updateMongoDbByIsliCode_success:" + isliCode);
}
} catch (Exception e) {
logger.error("updateMongoDbByIsliCode", e);
}
}
参考:
https://www.cnblogs.com/tomcatx/p/4245697.html
https://www.cnblogs.com/zhoulf/p/4571647.html