如堆栈溢出?
我注意到有些标签是同义词。例如餐厅和餐馆。有些标签是分层的。例如,食物->餐厅。
您如何在MongoDB中存储数据结构?
是否有默认值为ID的同义词集?
例如,如果用户搜索餐厅,你会怎么做?
您是将所有搜索转换成它的默认形式并搜索标签,还是将搜索扩展到它的所有同义词?
标准的方式是什么?
我正在使用MongoDB。
StackOverflow架构是关系的。(特别是MS SQL Server2008)它维护标记和post之间的多对多关系。并且保持标签与其同义词的单向关系。
您的restaurants示例似乎是一个分类系统,其中分类中的节点名称可能具有同义词。在这种情况下,分类的数据结构可能比实际的节点名称更重要。同义词的实现方式将高度依赖于数据结构和预期的查询模式。查看数据建模模式文档可以看到各种不同的数据结构。
Mongo没有任何内置在核心DB服务器中的名称别名功能。有些ORM在客户端提供了有限的名称别名功能。例如通过虚拟属性的mongoose。但是,使用这些方法时要谨慎,因为它们不能提供潜在的性能优势,而且可能会掩盖数据库中实际发生的情况。