2017-07-10 5 views
0

Ich habe ein Dokument Schema wie folgt aus:eine Reihe von verschachtelten Aktualisieren von Dokumenten rethinkdb

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

Ich vergaß zu ids für jeden Post auf Einfügung in der Datenbank zu erstellen. Also versuche ich, eine Abfrage für das zu schaffen:

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()}) 
    } 
) 

stattdessen diese Abfrage alle Beiträge mit einem id zurück, aber eigentlich nicht in der Datenbank aktualisieren. Ich versuchte, einen forEach anstelle einer Map-Funktion am Ende mit diesem nicht

Antwort

1

Nach vielen Optimierungen und Frustration funktioniert ich es herausgefunden:

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}) 
Verwandte Themen