我有一个包含此文档的表:
{
"autoroles": [
{
"id": "305372902679642113",
"users": [
"262700032262799382",
"166597257381150720",
"149505704569339904",
"203300837928206337"
]
}
],
"id": "275302446274838531",
"name": "Some name...",
"owner": "262700032262799382"
}
我想要检索具有特定autoroles.users
的文档(例如149505704569339904
)。所以,我创建了这个多索引:
r.table('serv').indexCreate('users', r.row('autoroles')('users'), {multi: true})
现在,我尝试获取文档:
r.table('serv').getAll('149505704569339904', {index:'users'})
但是这个查询什么也没有返回。
我不明白我做错了什么,因为autoroles.users
是一个数组,这是多索引应该处理的。
感谢您的回复:)
答案 0 :(得分:1)
您的autoroles
和users
字段都是数组。所以你的索引函数返回一个数组数组。使用您的示例文档:
> r.row('autoroles')('users')
[["262700032262799382", "166597257381150720", "149505704569339904", "203300837928206337"]]
您可以使用concatMap
代替在索引函数中展平该数组:
r.table('serv')
.indexCreate('users', r.row('autoroles').concatMap(r => r('users')), {multi: true})