gpt4 book ai didi

javascript - 多个值不起作用的 Rethinkdb 谓词函数 'contains'

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:33 24 4
gpt4 key购买 nike

我有一个如下所示的数据模式:

{
"datetime": "1453845345493",
"someIds": ["id2000-4", "id1000-34"]
}

其中数组 someIds 可以包含许多不同的值。

使用以下查询基于一个 ID 进行过滤没有问题,并返回大约 400 个结果。 (我还计划实现适当的索引,但目前正在测试一个更简单的案例。)

r.db("dbName").table("tableName")
.filter(r.row("datetime").gt(1453845340493))
.filter(function(someVal){
return someVal("someIds").contains("id2000-4");
})
.count()

但试图按照最后一个例子in the 'contains' documentation它建议使用谓词函数来模拟“或”语句什么都不返回,而当它应该返回上述的超集时:

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()

据我所知,我已完全按照该页面上的说明进行操作,但它不起作用。我正在运行 RethinkDB v2.2.3-1,并在数据资源管理器中运行它。有什么建议吗?

最佳答案

该页面上的示例正在调用 r.expr(ARRAY).contains(SINGLE_VAL),而您的代码正在调用 r.expr(ARRAY).contains(OTHER_ARRAY)。如果你想检查 someIds 是否包含数组中的任何元素,我会使用 https://www.rethinkdb.com/api/javascript/set_intersection/为了那个原因。 (所以类似于 .filter(function(someVal) { return r.expr(ARRAY).setIntersection(someVal('someIds')).count().ne(0); })。)

如果你想使用contains,你可以这样写:

.filter(function(someVal) {
return someVal('someIds').contains(function(someId) {
return r.expr(ARRAY).contains(someId);
});
})

关于javascript - 多个值不起作用的 Rethinkdb 谓词函数 'contains',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029162/

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