我正在使用 Rails 和 Mongoid。我正在尝试提出一个标记功能(类似于 stackoverflow,因为每个用户都可以拥有“最喜欢的”标签)。
从我读过的关于 mongodb 的设计文章中,我了解到我需要停止以“第四范式”形式思考。我一直在想有一个带有 and 的多对多表和另一个带有tag_id
anduser_id
的多对多tag_id
表item_id
。但是从阅读关于 nosql 的内容来看,在每个用户或项目中嵌入标签(作为标签甚至是字符串数组)似乎要好得多。
“标签”集合中将有一个标签列表,应用程序将控制用户是否可以将标签添加到他们的收藏夹中。
我试图弄清楚如何做到这一点。我是否让tag
模型key
上有一个title
并且只将一组数组存储keys
在用户模型中?在这种情况下,“链接”或“嵌入”会更好吗?我正在考虑如何检索标签,因为它们有一个键,例如foo-bar
标题是Foo Bar
. 如果我需要检索用户的标签,那么我是否需要遍历数组并获取每个标签模型以获取标题?