(本小结用到的数据在ArangoDB学习笔记(二)--文档的创建中已创建)
Character集合中每个文档都有一个traits字段,其值是字符列表,这样使得文档非常简洁,但是读者无法理解每个字符所代表的含义。
如果我们直接表示traits,文档则会很庞大难以维护。
下面两个模型形象的解释了上面两种情况,模型1表示直接将traits记录在文档中,模型2表示将traits和文档分开,在文档中用字符来表示traits,而traits独立成另一个Collection,最后将Character和Traits连接。
首先创建traits集合。
然后写入数据,
[
{ "_key": "A", "en": "strong", "de": "stark" },
{ "_key": "B", "en": "polite", "de": "freundlich" },
{ "_key": "C", "en": "loyal", "de": "loyal" },
{ "_key": "D", "en": "beautiful", "de": "schön" },
{ "_key": "E", "en": "sneaky", "de": "hinterlistig" },
{ "_key": "F", "en": "experienced", "de": "erfahren" },
{ "_key": "G", "en": "corrupt", "de": "korrupt" },
{ "_key": "H", "en": "powerful", "de": "einflussreich" },
{ "_key": "I", "en": "naive", "de": "naiv" },
{ "_key": "J", "en": "unmarried", "de": "unverheiratet" },
{ "_key": "K", "en": "skillful", "de": "geschickt" },
{ "_key": "L", "en": "young", "de": "jung" },
{ "_key": "M", "en": "smart", "de": "klug" },
{ "_key": "N", "en": "rational", "de": "rational" },
{ "_key": "O", "en": "ruthless", "de": "skrupellos" },
{ "_key": "P", "en": "brave", "de": "mutig" },
{ "_key": "Q", "en": "mighty", "de": "mächtig" },
{ "_key": "R", "en": "weak", "de": "schwach" }
]
在queries中写入如下语句,然后执行。
然后在COLLECTIONS中的Traits可以看到写入的数据,
我们先查看Ned的traits有哪些,
返回结果如下,
然后我们再看下每个字符所代表的含义,
返回结果如下,
只想看对应字符的标签可使用如下方法,
结果如下,
上面将Traits和对应字符连接起来了,现在我们将Character文档中的字符用Traits对应单词代替显示。也就是将character文档和traits文档融合。
结果如下,traits中的字符被代替了。
MERGE函数可以将对象重写,在character文档中也有traits属性,因此MERGE函数中的参数{traits:}可以代替character文档中的traits。