gpt4 book ai didi

rethinkdb - 如何在 RethinkDB 中填充

转载 作者:行者123 更新时间:2023-12-03 08:09:31 26 4
gpt4 key购买 nike

我有 2 个 RethinkDB 表:

Left: 
{
id: String,
title: String,
key: String // for mapping with table Right
}

Right:
{
id: String
title: String
description: String
}

RethinkDB 有 eqJoin() 和 zip() 方法,可以帮助我们将右表的所有字段克隆到左表:

r.db("myDB").table("Left")
.eqJoin("key", r.db("myDB").table("Right"))
.zip()

结果会是这样的:

[{
id: "the-id",
key: "Right-object-id",
title: "Title of Right Object",
description: "Description of Right Object"
// => title of Left Object was deleted
}]

问题是:如何模拟像 Mongoosepopulate() 这样的查询?

我想要这样的结果:

[{
id: "the-id",
key: {
id: "Right-object-id"
title: "Title of Right Object"
description: "Description of Right Object"
}
}]

最佳答案

使用 eqJoin

您可以使用 eqJoin 映射结果:

r.db("myDB").table("Left")
.eqJoin("key", r.db("myDB").table("Right"))
.map(function (row){
return row('left').merge({ key: row('right') })
})

子查询

虽然您可以在 RethinkDB 中使用 eqJoin,但子查询通常更易于使用且功能更强大。您可以使用 merge 术语添加新键,然后使用子查询设置该键的值:

r.db("myDB").table("Left")
.merge(function (row){
return {
'key': r.db("myDB").table("Right")).get(row('key'))
}
})

我通常从不使用eqJoin。它不像使用子查询那样容易使用。

关于rethinkdb - 如何在 RethinkDB 中填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32219862/

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