获取与其他数组匹配的所有项目
get all items that have match with other array
我正在创建一个查询,但我进入了一个部分,当时我不知道该怎么做。我有一个数组,例如有两个项目
//filter array
const filterArray=r.expr(['parking', 'pool'])
我也有一个 table,记录如下:
[
{
"properties": {
"facilities": [
"parking"
],
"name": "Suba"
}
},
{
"properties": {
"facilities": [
"parking",
"pool",
"pet friendly"
],
"name": "Kennedy",
}
},
{
"properties": {
"facilities": [
"parking",
"pool"
],
"name": "Soacha"
}
},
{
"properties": {
"facilities": [
"parking",
"pet friendly",
"GYM"
],
"name": "Sta Librada"
}
},
]
我需要用数组过滤记录,但我需要该记录包含数组过滤器的所有项目。如果记录有更多的数组过滤器项不是问题,如果包含数组过滤器的所有项我需要获取该记录。在这种情况下,我需要所有具有设施“pool”和“parking”的记录
当前查询
当前查询,但它也 return 记录了过滤器数组的一项或两项
r.db('aucroom').table('hosts')
.filter(host=>
host('properties')('facilities').contains(val=>{
return filterArray.contains(val2=>val2.eq(val))
})
)
.orderBy('properties')
.pluck(['properties'])
我希望等待的结果
喜欢图片示例:
如果要严格匹配两个数组(元素个数相同,顺序相同),则使用.eq()
array1.eq(array2)
如果你想让第一个数组包含第二个数组的所有元素,那么使用.setIntersection()
,只需要注意array2应该包含不同的元素(一组):
array1.setIntersection(array2).eq(array2)
我正在创建一个查询,但我进入了一个部分,当时我不知道该怎么做。我有一个数组,例如有两个项目
//filter array
const filterArray=r.expr(['parking', 'pool'])
我也有一个 table,记录如下:
[
{
"properties": {
"facilities": [
"parking"
],
"name": "Suba"
}
},
{
"properties": {
"facilities": [
"parking",
"pool",
"pet friendly"
],
"name": "Kennedy",
}
},
{
"properties": {
"facilities": [
"parking",
"pool"
],
"name": "Soacha"
}
},
{
"properties": {
"facilities": [
"parking",
"pet friendly",
"GYM"
],
"name": "Sta Librada"
}
},
]
我需要用数组过滤记录,但我需要该记录包含数组过滤器的所有项目。如果记录有更多的数组过滤器项不是问题,如果包含数组过滤器的所有项我需要获取该记录。在这种情况下,我需要所有具有设施“pool”和“parking”的记录
当前查询
当前查询,但它也 return 记录了过滤器数组的一项或两项
r.db('aucroom').table('hosts')
.filter(host=>
host('properties')('facilities').contains(val=>{
return filterArray.contains(val2=>val2.eq(val))
})
)
.orderBy('properties')
.pluck(['properties'])
我希望等待的结果
喜欢图片示例:
如果要严格匹配两个数组(元素个数相同,顺序相同),则使用.eq()
array1.eq(array2)
如果你想让第一个数组包含第二个数组的所有元素,那么使用.setIntersection()
,只需要注意array2应该包含不同的元素(一组):
array1.setIntersection(array2).eq(array2)