2017-03-23 76 views
2

我在rethinkdb上有3個表的結構。使用連接結果RethinkDB更新值

  • 進料 - 具有產品名稱和覆蓋信息

{ 「產品」: 「名稱-X」, 「覆蓋」: 「3%」}

  • 清潔 - 產品名稱同義詞清單

{ 「產品」: 「名稱-X」, 「同義」:[ 「名稱-X」, 「X」, 「產品X」]}

  • 設備 - 的一個列表設備和一些額外信息

{ 「產品」: 「產品X」, 「覆蓋」: 「0%」},{ 「產品」: 「產品-Y」, 「覆蓋」: 「1%」},{「product」:「product-x」, 「coverage」:「0%」}

我們將定期更新飼料表,然後運行查詢以更新設備表。

執行以下操作,我可以合併所有表格並從每個設備獲取正確的覆蓋範圍。

r.db('devices').table('cleaning').innerJoin(r.db('devices').table('feed'), 
function(cleaningRow, feedRow) { 
    return cleaningRow('synonyms').contains(feedRow('product')) 
}).zip().innerJoin(r.db('devices').table('devices').hasFields('product'), 
function(mergeRow, devicesRow) { 
    return mergeRow('synonyms').contains(devicesRow('product')) 
}).zip() 

我怎樣才能更新設備表用正確的信息?目前,我只能通過查詢獲得價值。


設備表格非常大,我們無法控制產品名稱的使用方式,這就是我們使用「清潔」表格的原因。另外,我可以在設備表中有多個「相同」設備的發生。

回答

1
r.db("dbName") 
.table("tblName").innerJoin(
    r.db("dbName").table("tblName1"), function(tl, path){ 
    return tblName("value1").eq(path("value1")); 
    } 
).map({ 
filterkey: r.row("left")("filterkey") 
})