MongoDB 少对少协会
MongoDB Few-To-Few Association
这是关于 的后续问题。
我来自关系数据库领域,现在正在使用 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 属于他的 calendars
之一的 users
的列表。
使用 MongoDB 构建此类项目的最佳方式是什么?
设计模式之一是将彼此关联的日历存储在各自的文档中。它会复制日历数据,但用户交互会非常快,因为当他登录时,他可以看到您可以在一个请求中获取的日历。
{userid : 'X1' , cal = [{} , {}]}
这里唯一的问题是,当有人更新日历时,您必须找到所有包含日历的文档并进行更新。所以在这种模式下读取速度很快,但写入速度有点慢。
使用适当的索引可以更快地找到具有特定调用的文档
db.collection.update({cal.id : 123},{});
这是关于
我来自关系数据库领域,现在正在使用 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
并编辑其内容(在此给定日历中的 CRUDposts
)。- 有时,但绝对不是在每个会话中,
user
将需要访问和 CRUD 属于他的calendars
之一的users
的列表。
使用 MongoDB 构建此类项目的最佳方式是什么?
设计模式之一是将彼此关联的日历存储在各自的文档中。它会复制日历数据,但用户交互会非常快,因为当他登录时,他可以看到您可以在一个请求中获取的日历。
{userid : 'X1' , cal = [{} , {}]}
这里唯一的问题是,当有人更新日历时,您必须找到所有包含日历的文档并进行更新。所以在这种模式下读取速度很快,但写入速度有点慢。
使用适当的索引可以更快地找到具有特定调用的文档
db.collection.update({cal.id : 123},{});