我有10,000多个couchdb文档,每个文档都有(简化)格式,如 -
{
"First Name" : "John",
"Last Name" : "Doe"
}
我想在此文档中添加另一个字段,即电子邮件,因此该文档现在看起来像 -
{
"First Name" : "John",
"Last Name" : "Doe",
"e-mail" : ""
}
据我所知,我可以通过以新格式插入新的JSON来轻松更新此文档。
但我的问题是如何自动将新字段添加到我在数据库中存在的“所有10,000多个”文档中?我是否需要编写自己的脚本来阅读每个文档并单独更新每个文档?或者有更简单的方法吗?
答案 0 :(得分:4)
如果使用视图访问数据,则无需修改文档即可修改视图。只需发出默认值为“”的电子邮件值。
假设上述情况不好,请使用视图向您显示需要升级的文档。
function(doc) {
// views.email_upgrade.map
if(! ('e-mail' in doc)) {
var key = [doc["Last Name"], doc["First Name"]];
emit(key, {_id:doc._id, _rev:doc._rev});
}
查询/db/_design/foo/_view/email_upgrade?include_docs=true
。您可以添加&limit=N
属性来提供帮助。查询。每行中的doc
值是需要升级的文档。您可以使用POST /db/_bulk_docs
将其发回。循环直到你有0行。获得0行后,请在validate_doc_update
函数中添加一项检查。