在couchdb中转换文档结构
我有数千份这样的文件:在couchdb中转换文档结构,couchdb,Couchdb,我有数千份这样的文件: { country:"ES", month: 4, cars: [ { name: "audi a5", doors: 1, PRICE: 40 }, { name: "audi a6", doors: 3, PRICE: 100 }, ] } 将其转换为其他形式的最佳方
{
country:"ES",
month: 4,
cars: [
{
name: "audi a5",
doors: 1,
PRICE: 40
},
{
name: "audi a6",
doors: 3,
PRICE: 100
},
]
}
将其转换为其他形式的最佳方式是:
[
{
name:"audi a5",
doors: 1,
prices:[
{month:4,country:"ES",price:40},
{month:5,country:"ES",price:44},
....
]
},
{
name:"audi a6",
doors: 3,
prices:[
{month:4,country:"ES",price:100},
{month:5,country:"ES",price:120},
....
]
},
]
我尝试了列表函数,但没有成功。它试图编译的元素可能太多。
每个原始文档包含大约20辆汽车。
总共大约有200辆汽车。100个国家和12个月。如果您想永久更改它们,请签出好市多: 根据您要更改的文档数量,更改速度可能相当慢,因为所有要更改的文档都会加载到浏览器中,进行转换,然后发送回Apache CouchDB或Cloudant
希望这能有所帮助,伊利亚。好市多很有趣,但就我而言,地图功能还不够。汽车的价格分布在许多文件中。所以,如果我理解正确,可以使用reduce或list函数。看起来像是将单个文档转换为多个文档。如果您可以将结果作为
\u列表
,则可以使用该输出创建新文档——在原始文档的各个部分成为新文档(签出批量文档)后将其删除。如果您使用的是Cloudant,那么链式MapReduce也可以做到这一点: