事件描述:本计划通过批量更新语句批量设置某个字段为空,误将整个记录设置为空,原纪录仅保留了ID
解决方式:通过opLog,数据库的操作日志表对数据进行还原
db.getSiblingDB("库1").getCollection("表1").find({
'name': {
'$exists': false
}
}).forEach(
function(item) {
var records = db.getSiblingDB("local").oplog.rs.find({
"op": "i",
"ns": "库1.表1",
"o._id": item._id
}).pretty().limit(1);
if (records.length() > 0) {
print(records[0].o._id + "开始");
db.getSiblingDB("库1").getCollection("表1").save(records[0].o);
print(records[0].o._id + "完成");
}
}
)