RethinkDB 的嵌套字段多索引
RethinkDB's multi-indexes on nested field
我有一份 table 和这份文件:
{
"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'})
但是这个查询return什么都没有。
我不明白我做错了什么,因为 autoroles.users
是一个数组,这是多索引应该处理的。
感谢您的回复:)
您的 autoroles
和 users
字段都是数组。所以你的索引函数 returns 是一个数组数组。使用您的示例文档:
> r.row('autoroles')('users')
[["262700032262799382", "166597257381150720", "149505704569339904", "203300837928206337"]]
您可以使用 concatMap
代替索引函数中的数组:
r.table('serv')
.indexCreate('users', r.row('autoroles').concatMap(r => r('users')), {multi: true})
我有一份 table 和这份文件:
{
"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'})
但是这个查询return什么都没有。
我不明白我做错了什么,因为 autoroles.users
是一个数组,这是多索引应该处理的。
感谢您的回复:)
您的 autoroles
和 users
字段都是数组。所以你的索引函数 returns 是一个数组数组。使用您的示例文档:
> r.row('autoroles')('users')
[["262700032262799382", "166597257381150720", "149505704569339904", "203300837928206337"]]
您可以使用 concatMap
代替索引函数中的数组:
r.table('serv')
.indexCreate('users', r.row('autoroles').concatMap(r => r('users')), {multi: true})