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

时间:2017-10-07 04:09:04

标签: javascript arrays rethinkdb

我希望从表记录中获取id,这些记录的数组与同一个表的数组示例中的其他记录匹配:

是用户'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"
            ]
        }
    ]
}

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

包含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
})

1 个答案:

答案 0 :(得分:0)

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

我在独特的查询(没有连接)中使用.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'))
})