Skip to content

Instantly share code, notes, and snippets.

@thinkjson
Forked from snsparrish/gist:1603065
Created January 12, 2012 21:14
Show Gist options
  • Select an option

  • Save thinkjson/1603157 to your computer and use it in GitHub Desktop.

Select an option

Save thinkjson/1603157 to your computer and use it in GitHub Desktop.
Remove field from all docs in a CouchDB database
console.log("Fetching docs...");
var j = 0;
var docs = [];
var ids = [];
nano.list({ stale: "ok" }, function(err, data, headers){
console.log("Updating " + data.rows.length + " docs...");
for (var i = 0; i < data.rows.length; i++) {
ids.push(data.rows[i].id);
}
});
setInterval(function() {
var id = ids.splice(0, 1);
if (id.length == 0) return;
nano.get(id[0], function (e, d, h) {
if (d.metadata && d.metadata.host) {
delete d.metadata['host'];
delete d.metadata['content-type'];
delete d.metadata['x-forwarded-proto'];
delete d.metadata['x-forwarded-port'];
delete d.metadata['content-length'];
delete d.metadata['connection'];
delete d.metadata['request-time'];
delete d.metadata['accept-encoding'];
delete d.metadata['cookie'];
console.log("Queueing up " + d._id);
docs.push(d);
}
});
}, 100);
setInterval(function() {
var batch = docs.splice(0, 1000);
if (batch.length > 0) {
//console.log("Processing batch of size ", batch.length);
nano.bulk({ docs: batch }, function(error, body, headers) {
//console.log("Got a response");
if (error) {
console.log(error);
errors = errors.concat(batch);
} else {
console.log("Altered " + batch.length + " docs");
//console.log(body);
}
});
}
}, 5000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment