2017-03-23 50 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") 
})