MongoDB 标签复用 + 无限级子分类设计思路(不可行)
更新:方法不可行
我在一个 Collection 中有两个数组,分别是上级标签(1,2,3)、关键词(电影,影视),我希望让每个上级标签中都能搜索到下属关键词(1-电影,1-影视,2-电影,2-影视,3-电影,3-影视),在创建索引时提示:
caused by :: cannot index parallel arrays
查了一下情况,发现这种索引是不可创建的,因为数组交叉产生的笛卡尔积不可控。
https://stackoverflow.com/questions/6516725/how-do-i-index-two-arrays-in-mongodb
也就是说我之前的设想是无法实现的。
标签(意同:分类/目录)复用是指同一标签/分类可出现于不同Parent分类中。比如:
电影/科幻 和 卡梅隆电影合集/科幻 中的 ”科幻“ 一词语境、含义完全相同,当该标签出现多个关键词时(比如不同语言),如果为每个分类都建立子目录,则会造成标签编辑的重复和存储资源的浪费。
借助MongoDB强大的数组和对象索引能力,我们可以改变传统的存储模式,将每个标签与其所归属的上级目录(^:ObjectID)建立关联,并衍生出子目录(_:new ObjectID)。
文章表中的数据只需要记录其所归属的子目录,逐层递归即可推导出分类标签的层级关系。