- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有“事件”表的 RethinkDB,每个事件都有一个“来自”和一个“到”列,两者都是时间戳。
我想主要通过返回时间窗口中“事件”的所有事件来查询此表,这意味着从列在时间窗口结束之前,结束列在时间窗口开始之后(开始时间窗口是当前时间,时间窗口结束是当前时间 + 2 小时)。
出于这个原因,我在两列上都创建了二级索引。
理想情况下,我希望将其作为单个更改源接收,包括实时事件的任何更改,并选择随着时间的推移而变得活跃的事件,但据我所知,这是不可能的,因为根据文档“命令now() 在服务器收到查询时计算一次”(如果我错了,请纠正我),所以我将求助于每小时创建一个新的 changefeed 来查询当前时间 2 小时内的事件事件。
现在我首先想到我会像这样在调用之间使用两个
let currentEndpoint = moment().add(2, 'hours');
// query for active events
r
.table('events')
// event start is before end of window
.between(new Date(1), currentEndpoint, {index: 'from'})
// event end is after current time
.between(new Date(), r.epochTime(1900266776))
.run(connection)
.then(res => {
console.log(res)
})
.catch(e => {
console.error(e);
})
ReqlQueryLogicError: Cannot perform multiple BETWEENs on the same tabl
event2
\
_____\______
/ \
time: ---->---->---->---->---->---->---->---->---->---->----> ...
\__/ \__/ / \__/
event1___/ event3__/ / event5__/
event4_/
^ ^
query window: |______________|
expected results: [ event2, event3 ]
events
table -
r.tableCreate("events");
// { tables_created: 1, ... }
year
,
month
, 和
day
.以更精细的时间解决问题,例如
hours
, 或
minutes
实际上是相同的
r.table("events").insert([
{ name: "fishing tourney"
, from: r.time(2020, 1, 11, "Z")
, to: r.time(2020, 1, 12, "Z")
}
, { name: "cherry blossom"
, from: r.time(2020, 4, 1, "Z")
, to: r.time(2020, 4, 10, "Z")
}
, { name: "fishing tourney"
, from: r.time(2020, 4, 11, "Z")
, to: r.time(2020, 4, 12, "Z")
}
, { name: "bunny day"
, from: r.time(2020, 4, 1, "Z")
, to: r.time(2020, 4, 12, "Z")
}
, { name: "fishing tourney"
, from: r.time(2020, 7, 11, "Z")
, to: r.time(2020, 7, 12, "Z")
}
]);
// { inserted: 5, generated_keys: [ ... ], ... }
r.table("events").indexCreate(
"event_window",
???
);
const start = r.time(2020, 4, 8, "Z"); // April 8, 2020
const end = start.add(3 * 24 * 60 * 60); // April 11, 2020, 3 days later
// filter it?
r.table("events").filter(???)...
// use .between somehow?
r.table("events").between(???, ???, { index: "event_window" })
// some other technique?
r.table("events").eqJoin(???)
r.table("events").???
// expected output
[ { name: "cherry blossom"
, from: r.time(2020, 4, 1, "Z")
, to: r.time(2020, 4, 10, "Z")
}
, { name: "fishing tourney"
, from: r.time(2020, 4, 11, "Z")
, to: r.time(2020, 4, 12, "Z")
}
]
最佳答案
您将在结果集中返回的事件至少属于以下一组:
from
和
to
属性,可查询
All events that ended in query window
, 并与
All events that started in query window
联合.您仍然可以为每组事件使用正确的索引。请记住对碰巧落入两个集合的事件进行重复数据删除。
r.table("events").between(r.time(2020, 4, 8, "Z"), r.time(2020, 4, 11, "Z"), { index: "from", rightBound: "closed" }).union(
r.table("events").between(r.time(2020, 4, 8, "Z"), r.time(2020, 4, 11, "Z"), { index: "to" })
).distinct()
关于javascript - 基于多个时间戳作为二级索引的 RethinkDB 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60781427/
RethinkDb 是否支持类似于 Mysql 中的 AUTO_INCREMENT 的整数列上的 AUTO_INCREMENT。 https://dev.mysql.com/doc/refman/5.
我可以在 RethinkDB 中创建复合主键吗?例如,如果我有下一个文档结构的表格 {authorsId: '371df80c-2efd-48f9-ac37-3edcdb152fb1', postsI
假设我有一个“类别”表,每个类别在“数据”表中都有关联数据,并且在其他“关联”表中都有关联数据,并且我想删除一个类别及其所有关联数据。我目前正在做的事情是这样的: getAllDataIdsFromC
我一直在寻找有关写入原子性的信息,但没有找到有关读取的信息。读取总是原子的吗?例如,我传递一个只读查询,通过查询多个不同的文档来使用append()填充数组。基本上,在查询开始出现在结果中后,我是否能
我正在尝试根据哈希中的一些预先计算的值更新 RethinkDB 中的多个文档。即 给定一个带有主键 slug 的表 stats 以及诸如 的数据 [{slug: 'foo', stats: {}},
RethinkDb 是否支持创建/管理数千个表? 用例:租户管理的表,没有已知架构。 编辑 future 引用:https://github.com/rethinkdb/rethinkdb/issue
我不知道如何获取“test.events”表的数据大小。 r.db('rethinkdb').table('stats').whatGoesHere() // Output size of 'even
我正在使用带有官方 python 驱动程序的 Rethinkdb 1.10.1。我有一个与一个用户关联的标记事物表: { "id": "PK", "user_id": "USER_PK
我需要从命令行以编程方式创建 RethinkDB 数据库。但是......我不知道如何做到这一点。 我知道我可以从 Web UI 或客户端驱动程序执行此操作,但是没有执行此操作的命令吗? 最佳答案 正
给定的样本数据,如: { 'id': 1, 'things': [{'name': 'a'},{'name': 'b'},{'name': 'c'}] } 如何更新文档以从嵌入的数组中删除
我正在处理一个看起来像这样的数据集: "bitrates": [ { "format": "mp3" , "rate": "128K" } , { "forma
我有 2 个 RethinkDB 表: Left: { id: String, title: String, key: String // for mapping with table R
如果数组存在,我们应该如何将一个项目追加到数组中,或者创建一个数组并插入到其中。 我尝试了合并命令,但不允许合并数组,只能替换它们。 r.db('testdb').table('users').get
我对 RethinkDB 中的连接如何工作有点模糊。每次执行查询时,我都会打开一个新连接,而不会在查询完成后关闭它们。 这是一个好的做法吗?或者我应该在查询完成后显式关闭连接? (我正在使用 JS 驱
我想限制 Rethinkdb 查询中嵌套对象的数量。假设我有嵌套消息的对话。 [对话] [{ id: "fgh675", name: "Some conversation",
我正在尝试从 RethinkDB 文档中删除 key 。我的方法(不起作用): r.db('db').table('user').replace(function(row){delete row["k
我正在实现一个使用 RethinkDB 来存储数据的应用程序(HTML 和 AngularJS)。 基本上,任何人都可以从 .js 文件获取 RethinkDB 连接凭据。 那么如何才能让用户只获取自
测试 RethinkDB 并想知道使用 JavaScript 客户端插入 1m 行的正确方法。目前正在执行类似以下操作,但要么简单地停止插入而没有错误,要么出现内存异常: fo
有没有办法在 rethinkdb 中取消订阅或更改现有的 changefeed 观察者?将 changes() 函数的返回值设置为 null 似乎没有任何作用,是否有 unsubscribe() 函数
我想在 RethinkDB 中随机排序文档。这样做的原因是我返回了n组文档,并且每组必须在结果中按顺序出现(所以属于一个组的所有文档应该放在一起);我需要随机选择一个文档,属于结果中的第一组(您不知道
我是一名优秀的程序员,十分优秀!