代表Mongodb上的“问答”功能

问题描述

|| 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
希望这可以帮助     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...