问题标签 [rethinkdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
229 浏览

coffeescript - What would be the opposite to hasFields?

I'm using logical deletes by adding a field deletedAt. If I want to get only the deleted documents it would be something like r.table('clients').hasFields('deletedAt'). My method has a withDeletes parameter which determines if deleted documents are excluded or not.

Finally, people at the #rethinkdb IRC channel suggested me to use the filter method and that did the trick:

My question is why do I have to use filter and not something like:

or something like that.

Thanks in advance.

0 投票
1 回答
2826 浏览

python - 为 JSON API 选择 RethinkDB 而不是传统的 SQL 有多合适?

我正在为我的网络应用程序构建后端;它将充当前端的 API,并将用 Python(准确地说是 Flask)编写。

在对设计和实现做出一些决定之后,我进入了数据库部分。我开始思考 NoSQL 数据存储是否可能比传统的 SQL 数据库更适合我的项目。以下是应该由数据库处理的基本功能描述,然后是我可以提出的关于我应该选择哪种类型的存储的优缺点列表。最后说说我为什么考虑使用 RethinkDB 而不是其他 NoSQL 数据存储。

API 的基本功能

API 仅包含几个模型:ArtistSongSuggestion和。UserUserArtists

我希望能够添加User带有一些关联数据的 a 并将一些Artists 链接到它。我想根据要求将Songs 添加到Artists 中,并Suggestion为 a生成 a User,其中将包含 anArtist和 a Song

也许最重要的部分之一是Artists 将定期链接到Users (并且Artists 也可以从系统中删除 - 因此也可以从 s 中删除User- 如果它们不满足某些标准)。Songs 也将被动态添加到Artists。这意味着Users 没有固定的 s 集合,Artists 也没有Artist固定的 s 集合Song——它们将不断更新。

优点

对于 NoSQL

  • 灵活的模式,因为不是每个Artist人都有 FacebookID 或SongSoundcloudID;
  • 虽然是 JSON API,但我相信我会从记录存储为 JSON 的事实中受益;
  • 我相信 s 的数量Song,尤其是Suggestions 的数量会增加很多,因此 NoSQL 会在这里做得更好;

对于 SQL

  • 它的固定模式可能对模型之间的关系派上用场;
  • Flask 支持 SQLAlchemy,这对定义模型很有帮助;

缺点

对于 NoSQL

  • 关系更难实现,更新模型类似于事务涉及一些代码;
  • Flask 没有任何包装器或模块来简化事情,因此我需要实现某种包装器来帮助我在执行数据库操作时使代码更具可读性;
  • 我不确定应该如何存储我的记录,尤其是UserArtists

对于 SQL

  • 操作很庞大,我必须定义模式,检查列是否有默认值,分配默认值,验证数据,开始/提交事务——我相信对于像 API 这样简单的东西来说太麻烦了;

为什么要重新思考数据库?

我考虑过 RehinkDB 可能为我的 API 实现 NoSQL,原因如下:

  • 它看起来比其他解决方案更简单、更轻量;
  • 它具有原生 Python 支持,这是一大优势;
  • 它实现了表连接和其他可以在我的 API 中派上用场的东西,这在模型之间有一些关系;
  • 这是相当新的,我看到了社区的很多暗示和爱。还有意愿不断添加利用数据库交互的新事物。

考虑到所有这些,我很高兴听到关于 NoSQL 或 SQL 是否更适合我的需求的任何建议,以及对这两者的任何其他赞成/反对意见,当然,还有对我没有说明的事情的一些更正适当地。

0 投票
1 回答
1203 浏览

rethinkdb - RethinkDB:​​从另一个表中的值从一个表中的数组中删除项目

我在我的项目中使用 RethinkDB 并具有以下表结构:

当我从内容表中删除项目时,我想保持数据一致 - 从aggregation_of_data_items.items 数组中删除ID - 是否有机会在一个请求中执行此操作(类似于MongoDB 中的$pull 或$pullAll)?

0 投票
1 回答
85 浏览

rethinkdb - 获取 Rethinkdb 索引元数据

我想获取有关 Rethinkdb 表上的索引的元数据,例如

  • 什么表达式用于任意索引
  • 复合索引使用哪些字段
  • 索引是否为多

如何通过管理界面获取此信息?通过 Python API?

谢谢!

0 投票
1 回答
2095 浏览

javascript - 如何连接具有 ID 数组的表

尝试使用此示例加入 ID 数组:https ://github.com/rethinkdb/rethinkdb/issues/1533#issuecomment-26112118

存储表片段

位置表片段

我想选择商店并加入他们的商店位置。

ReThinkDB 贡献者的原始示例:

我尝试转换为 JS

结果

RqlRuntimeError: Expected type ARRAY but found STRING

0 投票
3 回答
1207 浏览

rethinkdb - RethinkDB:​​获取在任何字段中包含字符串的所有文档

我想执行一个查询,该查询将返回在其任何字段中包含给定字符串的所有文档。例如,假设我有一个“users”表,我正在查找所有包含“john”的文档,返回的结果可以是:

[{"first_name": "jhon", "last_name": "watson"}, {"first_name": "elton", "last_name": "john"}, {"first_name": "sherlock", "last_name": "holmes", "best_friend": "john watson"}]

我如何在 rethinkdb 中做到这一点?javascript回答会做,python实现会更好。

0 投票
1 回答
545 浏览

javascript - 在 RethinkDB eqJoin() 上使用 Pluck/Without

我正在使用(如this answer中所建议的那样)从一组键中选择多个文档:

然后通过

这一切都很好。我想优化查询的唯一更改是我只需要employer_name来自雇主表的数据,因为有相当大的数据与“雇主”文档相关联。因为这个查询只包含eqJoins(),没有“基”表,有没有办法完成它?

0 投票
1 回答
306 浏览

database-performance - RethinkDB:​​获取每个类别的随机文档

我有一张桌子~8000 quiz questions。它们分为25 categories. 每个类别都有一个属性max_questions,它告诉我必须选择多少问题randomly才能生成测验。

例如

我想出了一个解决方案,但我需要大约。2 秒执行。

有没有更快的方法来使用 RethinkDB 检索问题?为一次测验提出 25 个请求并调用 25 次.sample()对我来说听起来并不好。

我真的很感谢你的帮助!

0 投票
2 回答
1025 浏览

database-design - RethinkDb 中的唯一整数计数器

假设我想在 RethinkDB 中建模构建一些小部件。构建过程开始,获取一个唯一的 ID,开始工作一段时间,然后在完成后将数据写入数据库中给定的 ID 下。有许多类型的小部件,并且 ID 在所有小部件中应该是唯一的。

如果我在 Postgres 中执行此操作,我可能会有一个主widget表,每个小部件类型(widget_xwidget_y等)都有一个表继承自该主表。ID 将是主widget表上的 SERIAL 类型。当构建过程开始时,我会插入一些数据,获取我的唯一 ID,开始工作,然后在构建完成后更新表格。我可能不会在整个过程中使用事务,因为构建可能需要很长时间。

在 RethinkDB 中如何做到这一点?我真的需要 ID 是一个递增的整数,所以我不能使用默认的 UUID 键。我希望每个小部件类型都在它自己的表中。

如果我在每个小部件构建开始之前执行此查询:

这会像我希望的那样工作,给我数据库范围的唯一 ID,而没有任何 ID 冲突的可能性吗?

谢谢...

0 投票
2 回答
1129 浏览

atomic - 当 Rethinkdb >= 1.11 中不存在文档时如何自动替换文档

我已将 rethinkdb 更新到 1.11.2,并在更新/替换命令中发现向后不兼容。在 1.10 中,两个命令命令都返回正确的响应

但在 1.11.2 中失败并出现错误:

我想以原子方式更新一个简单的文档,使用单个查询(不检查它是否存在)。

有没有办法以 1.10 的方式在 rethinkdb >= 1.11 中执行查询?