【发布时间】:2015-08-14 05:54:43
【问题描述】:
在我们的 RethinkDB 数据库中,我们有一个订单表和一个存储所有订单项目的单独表。 OrderItems 表中的每个条目都有对应订单的 orderId。
我想编写一个查询来获取所有已发货的订单项目(只是 OrderItems 表中的项目......我不想要整个订单)。但是订单是否“发货”存储在 Order 表中。
那么,是否可以编写一个查询,根据 Orders 表中相应订单的“已发货”值过滤 OrderItems 表?
如果您想知道,我们使用的是 Rethinkdb 的 JS 版本。
更新:
好的,我自己想出来的!这是我的解决方案。我不确定这是最好的方法(当然也不是超级有效),所以如果其他人有想法,我仍然很乐意听到。
我通过运行 .merge() 来根据 Order 表创建一个新字段,然后根据该值进行过滤。
针对我的问题,带有来自另一个表的过滤器的半通用查询如下所示:
r.table('orderItems')
.merge(function(orderItem){
return {
orderShipped: r.table('orders').get(orderItem('orderId')).pluck('shipped') // I am plucking just the "shipped" value, since I don't want the entire order
}
})
.filter(function(orderItem){
return orderItem('orderShipped')('shipped').gt(0) // Filtering based on that new "shipped" value
})
【问题讨论】:
-
一些示例记录以查看您的架构会有所帮助...
标签: rethinkdb