Skip to content

Instantly share code, notes, and snippets.

@snsparrish
Forked from thinkjson/gist:1603039
Created January 12, 2012 20:58
Show Gist options
  • Select an option

  • Save snsparrish/1603065 to your computer and use it in GitHub Desktop.

Select an option

Save snsparrish/1603065 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 = [];
var startdoc = '0';
function fetchdocs(startdocthistime){
nano.list({ stale: "ok", startkey:startdocthistime, limit:1000, include_docs:true}, 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);
if (data.rows[i].doc.metadata && data.rows[i].doc..metadata.host) {
delete data.rows[i].doc.metadata['host'];
delete data.rows[i].doc.metadata['content-type'];
delete data.rows[i].doc.metadata['x-forwarded-proto'];
delete data.rows[i].doc.metadata['x-forwarded-port'];
delete data.rows[i].doc.metadata['content-length'];
delete data.rows[i].doc.metadata['connection'];
delete data.rows[i].doc.metadata['request-time'];
delete data.rows[i].doc.metadata['accept-encoding'];
delete data.rows[i].doc.metadata['cookie'];
docs.push(data.rows[i].doc);
startdoc = data.rows[i].id;
delete data.rows[i];
}
}
delete data; // free up some memory.
fetchdocs(startdoc);
return true;
});
return true;
}
fetchdocs(startdoc);
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