在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也可以做到这一点: