如何在RethinkDB中处理多态字段?

时间:2016-01-05 20:45:05

标签: rethinkdb

说我有一个字段A,其值为:

  • "some string"
  • 12
  • ["I'm an array"]
  • {"great": "also an object"}

这是如何工作的? (如果确实如此)

I.e:在Elasticsearch中,例如,如果不存在显式映射,则基于所述字段的第一个值在封面下创建隐式字段映射。

例如:如果"some string"作为A的第一个值出现,则假定A包含从那时开始的字符串。如果之后任何不能强制转换为字符串的内容都会被持久化,那么插入将失败。

由于RethinkDb是无模式的(没有字段映射),这里是否适用相同的逻辑?

或者,作为替代方案,在类型上没有任何假设,多态值可以在同一个字段中幸福地生活在一起?

1 个答案:

答案 0 :(得分:0)

在类型上假设什么都没有,同一个字段可以有不同的类型。他们可以幸福地生活在一起。在进行查询时,如果您需要根据字段类型做出某些特殊决定,则可以使用branchtypeOf之类的内容,或使用map进行一些预处理。

您可以在数据浏览器中尝试此操作:

r.table('user').insert({f: "12"});
r.table('user').insert({f: 12})  ;
r.table('user').insert({f: [12]});
r.table('user').insert({f: {v: 12}});