如何在MongoDB中创建和存储定期日历事件

如何在MongoDB中创建和存储定期日历事件,mongodb,calendar,Mongodb,Calendar,我正在构建一个基于日历的应用程序,其中日历中有事件。事件可以重复发生(每日、每周、每月、每季度、每两年和每年) 每个事件文档都有一个默认的名称、默认日期和说明,但也包含一个与每个用户相关联的对象数组(userData,userDescription)。虽然事件是集中的,但有些用户有自己的userDate,这不是默认值,每个用户都可以为事件设置自己的userDescription。这就是userData对象存在的原因 为了澄清,事件文档如下所示: { _id: '1234567',

我正在构建一个基于日历的应用程序,其中日历中有事件。事件可以重复发生(每日、每周、每月、每季度、每两年和每年)

每个事件文档都有一个默认的
名称
默认日期
说明
,但也包含一个与每个用户相关联的对象数组(
userData
userDescription
)。虽然事件是集中的,但有些用户有自己的
userDate
,这不是默认值,每个用户都可以为事件设置自己的
userDescription
。这就是
userData
对象存在的原因

为了澄清,事件文档如下所示:

{
    _id: '1234567',
    name: 'Event One',
    description: 'This is the default description',
    defaultDate: '2017-02-15T12:00:00.000Z',
    userData: [
        { 
            userId: '8765432',
            userDate: '2017-06-10T12:00:00.000Z',    
            userDescription: 'My personalised description',
        },
        { 
            userId: '461938',
            userDate: '2017-03-21T12:00:00.000Z',    
            userDescription: 'I have a description too!',
        },       
    ]
}
我正试图找出最好的方法来处理这些事件在创建时的重复存储。编辑事件时,还需要编辑事件的所有其他副本。在任何情况下,都不会有一个事件需要编辑,但重复发生的事件保持不变的情况

创建事件时,我有一个HTML选择,询问事件是否重复发生,并有以下选项:无、每日、每周、每月、每季度、每两年、每年


如果有人能建议最好的方法来创建这些活动的重复副本,我将不胜感激

你觉得这些图案有用吗?我不是100%确定。因为他们使用的是mySQL,所以我不完全了解它们是如何工作的,以及它们是否适用于Mongo。我希望有人用MongoDB做了这件事,并且有一个对他们有用的解决方案。这些是解决一般问题的一般模式。有几种方法可以处理反复发生的事件,每种方法都有利弊。没有特定于SQL或mongo的内容。实现当然会有所不同,但如果您要求的是最佳方式,则需要选择最适合您的方式。否则问题就太广泛了。该页面上的解决方案专门使用SQL连接,对吗?如何将该解决方案应用于NoSQL数据库?我需要为我的日历提供一系列事件,因此我需要研究如何以允许我这样做的格式存储重复事件-我不认为问题太多。连接是最简单的部分。在所有情况下,它都是1:n关系,可以轻松地转换为文档数组,或者与聚合的查找一起使用。真正的问题是间隔计算的成本与积垢的成本。在那里的评论中对它进行了很好的描述。