2013-12-16 5 views
7

ich RethinkDB in meinem Projekt verwenden und haben die folgende Tabellenstruktur:RethinkDB: von Array in einer Tabelle nach Wert aus einer anderen Tabelle zu entfernen Artikel

data_item { 
    id: "generated_thing", 
    slug: "slug" 
} 

aggregation_of_data_items { 
    items: ["some", "ids", "from", "data_item", "table"] 
} 

Wenn ich Artikel aus Inhaltstabelle löschen möchte ich Daten konsistent halten - ID aus Array aggregation_von_data_items.items löschen - Gibt es eine Möglichkeit, dies in einer Anfrage zu tun (so wie $ pull oder $ pullAll in MongoDB)?

Antwort

5

Um ein Element aus einem Array löschen Sie die folgende (dies ist in Python, aber es funktioniert in jeder unterstützten Sprache) tun können:

def remove(doc, value): 
    doc.replace(
    lambda doc: doc.merge({"items" : doc["items"].set_difference([value])})) 

Jetzt müssen laufen wir eine Abfrage nur, dass sowohl der Fall ist, die Der einfachste Weg, dies zu tun ist, sie in ein Array zu setzen:

[r.table("data_item").get(id).delete(), 
remove(r.table("aggregation_of_..").get(...), id)] 
.run()