问题描述
||
Quora上的“要求回答”功能与我面临的技术问题类似。
本质上,一个用户(建议)要求另一个用户(建议)回答一个问题(问题)。
在mongodb中表示此架构的最佳方法是什么?
我想到了这样的事情:
User class stores an array called suggested questions,which stores a pair of values
Each value is \"suggester_userid | question_id\"
从检索角度来看这将是有效的,但似乎破坏了适当的架构设计。
什么是做到这一点的好方法?
解决方法
本质上,一个用户(建议)询问
(建议)另一个用户回答一个
问题(question)。
不知道我了解这个问题,但收集
{ suggester:...,suggested:...,question:...}
可能很好-可以对索引提示和建议进行索引。
, 我的应用程序中有类似的架构,我使用了不同的集合,称为“建议”
看起来像这样(Ruby Mongoid类)
class Item
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Paranoia
field :Suggested_id,:type => BSON::ObjectId
field :Question_id,:type => BSON::ObjectId
embedded_in :user
end
这最终将转化为
User
|
_ Name
_ Other fields
_ Suggestions (embedded doc)
- Suggested_id
- Question_id
如果您认为建议限制可能超过mongo文档的大小,则可以将嵌入式文档更改为DbRef文档,因此每个用户文档将有一个关联的建议文档。因此,单个建议文档将具有user_id和用户提出的所有建议作为嵌入式文档(项目)
Suggestion
|
_ user_id
_ items
|
_ suggested_id
_ Questionid
|
_ suggested_id
_ Questionid
希望这可以帮助