MongoDB中快速相关的标签搜索

时间:2010-11-03 12:20:22

标签: mongodb mongoid

我有两套文件:

Wiki和WikiTags。由于我想要灵活编辑标签名称,我不想将标签本身嵌入到维基文档中。所以,我在维基文档中存储了一个wiki_tag_ids列表。

我想知道使用此架构查找相关标签的最佳方法是什么。通过相关标签,我指的是其他wiki中标记有选定标签的标签。

可能我应该在WikiTag文档中存储相关标签吗?

1 个答案:

答案 0 :(得分:1)

我建议你应该存储在维基文档中存储WikiTag。 Mongodb允许轻松更新,从嵌套集合中删除单个文档,这意味着“灵活编辑标记名称”。

这样的集合:

wikis 
  {
    _id,
    wikiTags {_id, name, ...},
    ...
  }

因此,例如,如果您想要使用id = SomeTagId更新嵌套的WikiTag名称,您可以:

db.wikis.update( {'wikiTags.id':SomeTagId},
                 {$set:{'wikiTags.$.name':"New Tag Name"}},
                  false, 
                  true )

如果你想从嵌套数组中删除项目,你应该使用$unset,  添加新项目:$push, $addToSet

所以,我猜你现在看到任何带嵌套数组的操作都可以轻松完成。如果性能是一个问题 - 使用嵌入。

希望这有帮助。