说我有一个字段A
,其值为:
"some string"
12
["I'm an array"]
{"great": "also an object"}
这是如何工作的? (如果确实如此)
I.e:在Elasticsearch中,例如,如果不存在显式映射,则基于所述字段的第一个值在封面下创建隐式字段映射。
例如:如果"some string"
作为A
的第一个值出现,则假定A
包含从那时开始的字符串。如果之后任何不能强制转换为字符串的内容都会被持久化,那么插入将失败。
由于RethinkDb是无模式的(没有字段映射),这里是否适用相同的逻辑?
或者,作为替代方案,在类型上没有任何假设,多态值可以在同一个字段中幸福地生活在一起?
答案 0 :(得分:0)
在类型上假设什么都没有,同一个字段可以有不同的类型。他们可以幸福地生活在一起。在进行查询时,如果您需要根据字段类型做出某些特殊决定,则可以使用branch
和typeOf
之类的内容,或使用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}});