RethinkDB 中如何处理多态字段?

How are polymorphic fields handled in RethinkDB?

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

这是如何工作的? (如果有的话)

即:例如,在 Elasticsearch 中,如果不存在显式映射,则会根据针对所述字段出现的第一个值在幕后创建隐式字段映射。

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

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

或者,作为替代方案,在类型上不做任何假设,并且多态值可以在同一个字段中愉快地并存?

类型上没有任何假设,相同的字段可以有不同的类型。他们可以幸福地生活在一起。在查询时,如果需要根据字段类型做一些特殊的判断,可以使用branchtypeOf,或者pre-processing和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}});