Join 在数据库中合并文档数组

Join 在数据库中合并文档数组,join,merge,rethinkdb,reql,Join,Merge,Rethinkdb,Reql,假设我有一张名为bookshelf的桌子。我创建了一个bookshelf文档,其中包含一个ID数组,该数组引用另一个名为books的表中的书籍。我试图使用getAll和merge在查询中组合文档,但似乎无法将所有元素传递到getAll。我相信getAll将ID数组解释为一个文本“对象” 书架上的文件: { id: 'MyShelf' books: [ 1, 2, 6, 9 ] } { id: 1 name: 'Merging in RethinkDB for D

假设我有一张名为
bookshelf
的桌子。我创建了一个bookshelf文档,其中包含一个ID数组,该数组引用另一个名为books的表中的书籍。我试图使用
getAll
merge
在查询中组合文档,但似乎无法将所有元素传递到
getAll
。我相信getAll将ID数组解释为一个文本“对象”

书架上的文件:

{
    id: 'MyShelf'
    books: [ 1, 2, 6, 9 ]
}
{
    id: 1
    name: 'Merging in RethinkDB for Dummies'
}
书籍文件:

{
    id: 'MyShelf'
    books: [ 1, 2, 6, 9 ]
}
{
    id: 1
    name: 'Merging in RethinkDB for Dummies'
}
我的问题是:

r.db('test').table('bookshelf').merge(function(bookshelf) {
    return {
        booksOnShelf: r.table('books').getAll(bookshelf('books')).coerceTo('array')
    }
})
预期结果:

{
    id: 'MyShelf'
    books: [ 1, 2, 6, 9 ],
    booksOnShelf: [
        { id: 1, name: 'Merging in RethinkDB for Dummies' },
        { id: 2, name: 'Cool Title!' },
        ...
    ]
}
实际结果:

{
    id: 'MyShelf'
    books: [ 1, 2, 6, 9 ],
    booksOnShelf: [ ]
}

事实证明,我需要使用
r.args
将数组转换为实际参数,以便与
getAll
函数一起使用

以下是正确的查询:

r.db('test').table('bookshelf').merge(function(bookshelf) {
    return {
        booksOnShelf: r.table('books').getAll(r.args(bookshelf('books'))).coerceTo('array')
    }
})
结果是:

{
    "books": [ 1, 2 ],
    "booksOnShelf": [{
        "id": 1,
        "title": "RethinkDB for Dummies"
    }, {
        "id": 2,
        "title": "Awesome Title!"
    }],
    "id": "MyShelf"
}

DB explorer中的快速问题reql与使用JS驱动程序编写的reql相同?如果您使用的是本机DB JS驱动程序,则查询应该相同。我不记得有任何可移植性问题。