RethinkDB过滤对象数组
RethinkDB filtering Object Array
我是 rethinkdb 的新手,我想过滤类似... 全部以奇异果或草莓作为首选水果
{
"id": "65dbaa34-f7d5-4a25-b01f-682032fc6e05" ,
"fruits": {
"favorite": "Mango" ,
"preferred": [
"Kiwi" ,
"Watermelon"
]
}
}
我在阅读 contains
文档后尝试了类似的方法:
r.db('appname').table('food')
.filter(r.row('fruits').contains(function(doc) {
return doc('preferred').contains('Kiwi');
}))
我遇到 e: Cannot convert OBJECT to SEQUENCE in:
错误。
这就是您要查找的内容:
r.db('appname').table('food')
.filter((row) => {
r.or( // Returns true if any of the following are true
row('fruits')('preferred').contains('Kiwi'),
row('fruits')('preferred').contains('Strawberry')
)
});
你也应该知道,你可以创建自己的索引来为你计算这个,然后你就可以使用你的自定义索引和 return 进行 .getAll
查询非常快速地符合此约束的文档。
最后,对于一些也可以工作但在大型阵列上可能效率较低的东西:
r.db("appname").table('food')
.filter((row) => {
return row('fruits')('preferred').setIntersection(['Kiwi', 'Strawberry']).count().gt(0)
})
我是 rethinkdb 的新手,我想过滤类似... 全部以奇异果或草莓作为首选水果
{
"id": "65dbaa34-f7d5-4a25-b01f-682032fc6e05" ,
"fruits": {
"favorite": "Mango" ,
"preferred": [
"Kiwi" ,
"Watermelon"
]
}
}
我在阅读 contains
文档后尝试了类似的方法:
r.db('appname').table('food')
.filter(r.row('fruits').contains(function(doc) {
return doc('preferred').contains('Kiwi');
}))
我遇到 e: Cannot convert OBJECT to SEQUENCE in:
错误。
这就是您要查找的内容:
r.db('appname').table('food')
.filter((row) => {
r.or( // Returns true if any of the following are true
row('fruits')('preferred').contains('Kiwi'),
row('fruits')('preferred').contains('Strawberry')
)
});
你也应该知道,你可以创建自己的索引来为你计算这个,然后你就可以使用你的自定义索引和 return 进行 .getAll
查询非常快速地符合此约束的文档。
最后,对于一些也可以工作但在大型阵列上可能效率较低的东西:
r.db("appname").table('food')
.filter((row) => {
return row('fruits')('preferred').setIntersection(['Kiwi', 'Strawberry']).count().gt(0)
})