Javascript 重新定义DB谓词函数';包含';对于多个不起作用的值
我有一个如下所示的数据模式:Javascript 重新定义DB谓词函数';包含';对于多个不起作用的值,javascript,rethinkdb,rethinkdb-javascript,Javascript,Rethinkdb,Rethinkdb Javascript,我有一个如下所示的数据模式: { "datetime": "1453845345493", "someIds": ["id2000-4", "id1000-34"] } .filter(function(someVal) { return someVal('someIds').contains(function(someId) { return r.expr(ARRAY).contains(someId); }); }) 其中数组someid可以包含许多不同的值 使用
{
"datetime": "1453845345493",
"someIds": ["id2000-4", "id1000-34"]
}
.filter(function(someVal) {
return someVal('someIds').contains(function(someId) {
return r.expr(ARRAY).contains(someId);
});
})
其中数组someid
可以包含许多不同的值
使用以下查询基于一个id进行过滤,不会产生问题,并返回大约400个结果。(我还计划实现适当的索引,但目前正在测试一个更简单的案例。)
但尝试遵循最后一个示例,其中建议使用谓词函数模拟“or”语句,但该语句应返回上述内容的超集,而不返回任何内容:
r.db("dbName").table("tableName")
.filter(r.row("datetime").gt(1453845340493))
.filter(function(someVal){
return r.expr(["id2000-4", "id1000-77"]).contains(someVal("someIds"));
})
.count()
据我所知,我已经完全按照那一页上的说明进行了操作,但它不起作用。我运行的是ReflectionDB v2.2.3-1,并在数据资源管理器中运行它。有什么建议吗?该页面上的示例正在调用
r.expr(ARRAY).contains(SINGLE\u VAL)
,而您的代码正在调用r.expr(ARRAY).contains(OTHER\u ARRAY)
。如果您想检查someid
是否包含数组中的任何元素,我会使用它。(比如.filter(函数(someVal){return r.expr(数组).setIntersection(someVal('someIds')).count().ne(0);})
)
如果要使用contains
,可以这样编写:
{
"datetime": "1453845345493",
"someIds": ["id2000-4", "id1000-34"]
}
.filter(function(someVal) {
return someVal('someIds').contains(function(someId) {
return r.expr(ARRAY).contains(someId);
});
})