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 是一个数组,这是多索引应该处理的。

感谢您的回复:)

您的 autorolesusers 字段都是数组。所以你的索引函数 returns 是一个数组数组。使用您的示例文档:

> r.row('autoroles')('users')
[["262700032262799382", "166597257381150720", "149505704569339904", "203300837928206337"]]

您可以使用 concatMap 代替索引函数中的数组:

r.table('serv')
 .indexCreate('users', r.row('autoroles').concatMap(r => r('users')), {multi: true})