gpt4 book ai didi

RethinkDB:​​RqlRuntimeError:无法对序列序列执行括号

转载 作者:行者123 更新时间:2023-12-01 19:20:39 24 4
gpt4 key购买 nike

给定表格中的以下文档:

[
{
"id": "d30aa369-99d6-4a40-9547-2cbdf0bb069a",
"locations": [
{
"alerts": [
{"person": 200},
{"person": 300}
],
"name": "home"
},
{
"alerts": [
{"person": 200},
{"person": 300}
],
"name": "work"
}
],
"person": 100
},
{
"id": "d671d2c7-0e0d-43c0-9148-9e6b049b49a7",
"locations": [
{
"alerts": [
{"person": 100},
{"person": 300}
],
"name": "home"
},
{
"alerts": [
{"person": 100},
{"person": 300}
],
"name": "work"
}
],
"person": 200
}
]

我想返回具有包含特定人员的警报的所有位置。我想事情会是这样的:

r.db('db').table('test')('locations').filter(function(location){
return location('alerts')('person').eq(200);
});

但我得到:

RqlRuntimeError: Cannot perform bracket on a sequence of sequences in:

执行此查询的正确方法是什么?

最佳答案

每当出现“序列的序列”错误时,解决方案通常涉及使用 concatMap .

在这种情况下,我认为这会给你带来你想要的:

r.db('db').table('table')
.concatMap(r.row('locations'))
.filter(r.row('alerts')('person').contains(200))

concatMap 与恒等函数 function(x){return x} 也称为“展平”(尽管没有称为展平的 reql 术语)

编辑:

如果你想返回整个顶级文档,你需要将 concatMap 进一步向下推,并使用我上面提到的“展平”习惯用法:

r.db('db').table('table').filter(function(person){
return person
('locations')
('alerts')
.concatMap(function(x){return x}) // flatten
('person')
.contains(200)
})

关于RethinkDB:​​RqlRuntimeError:无法对序列序列执行括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27406040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com