Skip to content

Instantly share code, notes, and snippets.

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

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

Select an option

Save thinkjson/1603326 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 startdoc = '0';
function fetchdocs(){
nano.list({ stale: "ok", startkey:startdoc, limit:2000, include_docs:true}, function(err, data, headers){
console.log("Updating " + data.rows.length + " docs...");
for (var i = 0; i < data.rows.length; i++) {
var doc = data.rows[i].doc;
//console.log(doc);
if (doc.metadata && doc.metadata.host) {
delete doc.metadata['host'];
delete doc.metadata['content-type'];
delete doc.metadata['x-forwarded-proto'];
delete doc.metadata['x-forwarded-port'];
delete doc.metadata['content-length'];
delete doc.metadata['connection'];
delete doc.metadata['request-time'];
delete doc.metadata['accept-encoding'];
delete doc.metadata['cookie'];
docs.push(doc);
console.log("Queueing up", doc._id);
}
startdoc = doc._id;
}
fetchdocs();
return true;
});
return true;
}
fetchdocs();
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);
}
});
}
}, 1000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment