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'))
我正在尝试以一种简单的方式在 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'))