MongoDB - 查找/分类

时间:2012-02-26 00:05:29

标签: mongodb

在我的MongoDB数据库中,我有许多需要查找/分类信息的文档类型。通常情况下,我要么持有查询的ID,要么持有Id并将查找信息归结为主文档。

e.g。

task = { 
   TaskDetail : "Some task",
   TaskPriority : { Id : xxxxx, Code : 'U', Description:'Urgent' }
}

从传统的关系数据库(RDBMS)转移到我只有一个TaskPriority表,我想知道在mongo中使用文档时最佳做法是什么?

我最初的想法是要有一个分类/查找集合。通常,查找和枚举很短,因此每个文件都可以是集合中的单独文档?或者我可以镜像你在RDBMS数据库中通常做的事情并创建一个集合来查找?

有人能指出我正确的方向吗?

提前致谢,

萨姆

1 个答案:

答案 0 :(得分:0)

参考具有以下优点:

  1. 更好地管理主数据
  2. 重复数据删除,因此更新次数较少。
  3. 缺点:

    1. 查找是一个单独的API调用,在MongoDB中没有连接
    2. $ DBRef的$ lookup函数仍然可以使用,但很麻烦。手动参考更容易。
    3. 文档级别的原子性,因此如果更新参考查找集合,集合中的查找可能会暂时不同步。
    4. 嵌入 - 另一方面,嵌入对参考数据没有意义,因为如果查找值得到更新,您需要更新所有文档。这是一个巨大的练习,可以跟踪需要参考数据更新的所有文档及其密钥。

      其次嵌入参考数据,也无法实现SCD(缓慢变化维度)的历史保存能力。如果使用引用,则可以使用引用集合中的版本日期来实现此目的。

      考虑到这些要点,我倾向于参考。但我唯一的疑问是,如果我的父文档中没有引用的值,搜索将如何工作?当用户使用描述性引用值进行搜索时,mongo将如何引用引用数据集合?