获取在数组 rethinkdb 之间进行匹配的记录

get records doing a match between arrays rethinkdb

我想从 table 记录中获取 ID,这些记录的数组与来自同一 table 的数组中的其他记录相匹配示例:

这是用户“1”的记录

✔ r.db('fotogena').table('users').filter({user:'1'}).pluck('pleasures')



{
    "pleasures": [
        {
            "category": "432f1ae0-a7b1-11e7-86dc-d709d79803e4",
            "subCategory": [
                "432f1ae1-a7b1-11e7-86dc-d709d79803e4"
            ]
        },
        {
            "category": "432f1aef-a7b1-11e7-86dc-d709d79803e4",
            "subCategory": [
                "432f1af5-a7b1-11e7-86dc-d709d79803e4"
            ]
        },
        {
            "category": "432f1afa-a7b1-11e7-86dc-d709d79803e4",
            "subCategory": [
                "432f1afb-a7b1-11e7-86dc-d709d79803e4",
                "432f1afc-a7b1-11e7-86dc-d709d79803e4",
                "432f1afd-a7b1-11e7-86dc-d709d79803e4"
            ]
        },
        {
            "category": "432f1b02-a7b1-11e7-86dc-d709d79803e4",
            "subCategory": [
                "432f1b03-a7b1-11e7-86dc-d709d79803e4",
                "432f1b04-a7b1-11e7-86dc-d709d79803e4",
                "432f1b07-a7b1-11e7-86dc-d709d79803e4"
            ]
        }
    ]
}

并且我想比较 pleasure.subCategory 中的每个项目(没有用户 '1')与具有相同结构的相同 table 中的其他记录。

Table 有 3 条记录

[
    {
        "date": "2017-10-03T03:58:02.651Z",
        "id": "d82279a7-fbc6-40a2-99ca-39796ea57efa",
        "pleasures": [
            {
                "category": "432f1ae0-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1ae1-a7b1-11e7-86dc-d709d79803e4"
                ]
            },
            {
                "category": "432f1aef-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1af5-a7b1-11e7-86dc-d709d79803e4"
                ]
            },
            {
                "category": "432f1afa-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1afb-a7b1-11e7-86dc-d709d79803e4",
                ]
            },
            {
                "category": "432f1b02-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1b03-a7b1-11e7-86dc-d709d79803e4",
                ]
            }
        ],
        "user": "1"
    },
    {
        "date": "2017-10-07T02:59:45.942Z",
        "id": "174c0e35-da79-4ca8-b237-8ec569cc27b1",
        "pleasures": [
            {
                "category": "432f1ae0-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1ae1-a7b1-11e7-86dc-d709d79803e4",
                ]
            },
            {
                "category": "432f1aef-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1af3-a7b1-11e7-86dc-d709d79803e4",
                    "432f1af4-a7b1-11e7-86dc-d709d79803e4"
                ]
            },
            {
                "category": "432f1afa-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1aff-a7b1-11e7-86dc-d709d79803e4",
                ]
            },
            {
                "category": "432f1b02-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1b04-a7b1-11e7-86dc-d709d79803e4",
                ]
            }
        ],
        "user": "10"
    },
    {
        "date": "2017-10-07T02:07:13.715Z",
        "id": "dd11edac-e0f5-43ac-811a-eaa78a6509c7",
        "pleasures": [
            {
                "category": "432f1ae0-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1ae1-a7b1-11e7-86dc-d709d79803e5"
                ]
            },
            {
                "category": "432f1aef-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1af3-a7b1-11e7-86dc-d709d79803e5"
                ]
            },
            {
                "category": "432f1afa-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1af3-a7b1-11e7-86dc-d709d79803e6"
                ]
            },
            {
                "category": "432f1b02-a7b1-11e7-86dc-d709d79803e4",
                "subCategory": [
                    "432f1af3-a7b1-11e7-86dc-d709d79803e7"
                ]
            }
        ],
        "user": "25"
    }
]

我想也许可以:

r.db('fotogena').table('users').filter({user:'1'}).pluck('pleasures').map(pleasures=>{
    return //do something
})

我可以解决它,稍后搜索和搜索,我可以创建一个脚本来显示我想要

我在唯一查询(无连接)中使用 .contains() 比较数组和数组并且效果很好

r.db('fotogena').table('users').filter(users=>{
    return users('pleasures').contains(category=>{
        return category('subCategory').contains(subCategory=>{
            return r.db('fotogena').table('users').filter({user: '1'}).pluck('pleasures').contains(pleasures2=>{
                return pleasures2('pleasures').contains(subCate2=>{
                    return subCate2('subCategory')
                    .contains(subCategory2=>{
                        return subCategory2.eq(subCategory)
                    })

                })
            })
        })
    }).and(users('user').ne('1'))
})