use recoverDoc;
for(i=0; i < 100; i++){db.col1.insert({_id : i})};
for(i=100; i < 200; i++){db.col1.insert({_id : i, name : "some_x_name"})};
> db.col1.remove({ "name" : "some_x_name"})
WriteResult({ "nRemoved" : 100 })
use local;
db.oplog.rs.find({op : "i", ns : "recoverDoc.col1", "o.name" : "some_x_name"}).count();100
db.oplog.rs.find({op : "i", ns : "recoverDoc.col1", "o.name" : "some_x_name"}, {"o" : 1});{ "o" : { "_id" : 100, "name" : "some_x_name" } }
{ "o" : { "_id" : 101, "name" : "some_x_name" } }
{ "o" : { "_id" : 102, "name" : "some_x_name" } }
{ "o" : { "_id" : 103, "name" : "some_x_name" } }
{ "o" : { "_id" : 104, "name" : "some_x_name" } }
var deletedDocs = db.oplog.rs.find({op : "i", ns : "recoverDoc.col1", "o.name" : "some_x_name"}, {"o" : 1}).toArray();
> deletedDocs.length
100
use recoverDoc;
db.col1.count();
100
// simple for loop to re-insert the relevant elements
for (var i = 0; i < deletedDocs.length; i++) {
db.col1.insert({_id : deletedDocs[i].o._id, name : deletedDocs[i].o.name});
}
// check total and name counts again
db.col1.count();
200recoverDoc.col1
db.col1.count({name : "some_x_name"})
100
Comments
Post a Comment