MongoDB少数几个协会

时间:2015-07-17 15:53:52

标签: mongodb many-to-many nosql

这是关于MongoDB : where is the limit between "few" and "many"?的后续问题。

我来自关系数据库世界,我现在正在使用MongoDB开发一个新的NoSQL项目。

编辑:我正在使用 Rails 开展此项目,并决定转移到 Meteor 进行原型设计,这需要使用 MongoDB的。我正在提供以下信息,以解释在处理项目的 Rails 版本时我在数据库架构方面提出的问题。

该项目将基于以下馆藏:

User
  firstName
  lastName
  emailAddress
  password     

Calendar
  title

Role
  userId
  calendarId

Post
  calendarId
  date
  time
  focus
  format
  blogTitle
  longCopy
  shortCopy
  link
  hashtag
  media
  promotion
  target
  approval
  comment

user将能够创建和管理多个calendars,而calendar将允许多个users进行协作。

我相信这将是few-to-few(而不是many-to-many)关联,因为:

  • user不应超过几十calendars
  • calendar不应该有十几个users

访问模式如下:

  • 用户将登录,并自动显示他的日历列表。
  • user的主要操作是选择calendar并修改其内容(此给定日历中的CRUD posts)。
  • 有时,但绝对不在每个会话中,user将需要访问并CRUD属于他users之一的calendars列表。

用MongoDB构建这样一个项目的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

其中一种设计模式是将彼此关联的日历存储在自己的文档中。它将复制日历数据,但用户交互将非常快,因为登录时他可以看到您可以在一个请求中获取的日历。

          {userid : 'X1' , cal = [{} , {}]}

只有在这里抓住的是,当有人更新日历时,您必须找到具有日历的所有文档并进行更新。因此,在这种模式下读取速度很快,但写入速度很慢。

使用正确的索引可以更快地找到具有特定呼叫的文档

       db.collection.update({cal.id : 123},{});