我试图以简单的方式在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'
}
]
}
]
价格表:
[
{
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"
]
答案 0 :(得分:1)
r.table('users')('inventory')
是一个数组序列,因此r.table('users')('inventory')('name')
是一个名称数组,而不是一个名称。
也许使用concatMap
会产生预期效果。例如:
r.table('users')
.concatMap(r.row('inventory').default([]))
.eqJoin('name', r.table('prices'))