如何在RethinkDB中返回已过滤的嵌套数组?

时间:2016-08-31 11:38:17

标签: arrays rethinkdb

是否可以在RethinkDB中过滤嵌套数组的元素,类似于MongoDB中的$ elemMatch?

例如,如果我们有一个简单的表集合,如:

[
    {
        "name": "test1" ,
        "nested": [
            {
                "name": "nested1" ,
                "user": "paul"
            } ,
            {
                "name": "nested2" ,
                "user": "paul"
            } ,
            {
                "name": "nested3" ,
                "user": "dave"
            }
        ]
    } ,
    {
        "name": "test2" ,
        "nested": [
            {
                "name": "nested4" ,
                "user": "dave"
            } ,
            {
                "name": "nested5" ,
                "user": "paul"
            } ,
            {
                "name": "nested6" ,
                "user": "steve"
            }
        ]
    }
]

如何编写过滤器来返回文档,过滤后的数组包含用户“paul”?

所以我的结果是:

[
    {
        "name": "test1" ,
        "nested": [
            {
                "name": "nested1" ,
                "user": "paul"
            } ,
            {
                "name": "nested2" ,
                "user": "paul"
            }
        ]
    } ,
    {
        "name": "test2" ,
        "nested": [
            {
                "name": "nested5" ,
                "user": "paul"
            }
        ]
    }
]

我可以通过以下方式获取文件:

r.db('test').table('example').filter(r.row('nested')('user').contains('paul'))

如何过滤嵌套数组?

谢谢,

1 个答案:

答案 0 :(得分:2)

  table.map(function(row) {
    return row.merge({
      nested: row('nested').filter({user: 'paul'})
    })
  })