RethinkDB 中 eqJoin 的主键太长

Primary key too long with eqJoin in RethinkDB

我正在尝试以一种简单的方式在 RethinkDB 中使用连接。

这是我尝试过的查询,如文档中所示:

r.table('users')('inventory').default([]).eqJoin('name', r.table('prices')).without({
    right: 'name'
}).zip()

我有一个像这样的每个用户的项目列表:

[
    {
        id: "user1",
        inventory: [
            {
                itemid: '1418676',
                name: 'foo'
            },
            {
                itemid: '2849',
                name: 'bar'
            }
        ]
    },
    {
        id: "user2",
        inventory: [
            {
                itemid: '98742',
                name: 'top'
            },
            {
                itemid: '6217',
                name: 'kek'
            }
        ]
    }
]

还有价格table:

[
    {
        name: 'foo',
        price: 42
    },
    {
        name: 'bar',
        price: 41
    },
    {
        name: 'top',
        price: 40
    },
    {
        name: 'kek',
        price: 69
    }
]

但由于某些原因驱动程序抛出错误:

e: Primary key too long (max 127 characters): [
    "foo",
    "bar",
    "top",
    "kek",
    "and all the other items name"
]

r.table('users')('inventory') 是一个数组序列,因此 r.table('users')('inventory')('name') 是一个名称数组,而不是单个名称。

也许使用 concatMap 会得到想要的结果。例如:

r.table('users')
 .concatMap(r.row('inventory').default([]))
 .eqJoin('name', r.table('prices'))