2017-07-10 155 views
0

我有一個文件的架構是這樣的:更新嵌套文檔的數組rethinkdb

{ 
"name":"", 
"type":"", 
"posts":[ 
{ 
"url":"", 
"content":"", 
... 
}, 
{ 
"url":"", 
"content":"", 
... 
} 
... 
] 
}... 

我忘記了創建的ID對每個插入後在數據庫中。所以我想爲創建查詢:

r.db('test').table('crawlerNovels').filter(function (x){ 
    return x.keys().contains('chapters') 
}).map(function (x){ 
    return x('chapters') 
}).map(
    function(x){ 
    return x.merge({id:r.uuid()}) 
    } 
) 

,而不是該查詢返回所有文章與ID,但並不在數據庫中實際更新。我嘗試使用foreach而不是在最後一個地圖功能,這不起作用

回答

1

經過大量的調整和挫折的我理解了它:

r.db('test').table('crawlerNovels').filter(function (x){ 
    return x.keys().contains('chapters') 
}).update(function(novel){ 
    return {"chapters":novel('chapters').map( 
    function(chapter){ 
    return chapter.merge({"id":r.uuid()}) 
    })} 
},{nonAtomic:true})