gpt4 book ai didi

Rethinkdb - 按另一个表中的值过滤

转载 作者:行者123 更新时间:2023-12-02 23:32:28 25 4
gpt4 key购买 nike

在我们的 RethinkDB 数据库中,我们有一个订单表和一个存储所有订单项的单独表。 OrderItems 表中的每个条目都有相应订单的 orderId。

我想编写一个查询来获取所有已发货订单商品(仅是 OrderItems 表中的商品...我不需要整个订单)。但订单是否“已发货”存储在 Order 表中。

那么,是否可以编写一个查询,根据 Orders 表中相应订单的“已发货”值来过滤 OrderItems 表?

如果您想知道,我们正在使用 Rethinkdb 的 JS 版本。

更新:

好吧,我自己想出来了!这是我的解决方案。我不确定这是最好的方法(当然也不是 super 有效),所以如果其他人有想法,我仍然很乐意听到他们。

我通过运行 .merge() 来根据订单表创建一个新字段,然后根据该值进行过滤。

针对我的问题,使用来自另一个表的过滤器的半广义查询如下所示:

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

最佳答案

这会容易得多。

r.table('orderItems').filter(function(orderItem){
return r.table('orders').get(orderItem('orderId'))('shipped').default(0).gt(0)
})

最好避免结果为 NULL,添加 '.default(0)'

关于Rethinkdb - 按另一个表中的值过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25000457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com