2012-06-05 2 views
3

반복되는 이벤트에 대한 데이터 저장 방법에 대해 설명하는 일부 문서를 읽었지만, 여전히 MongoDB와 관련하여 모범 사례에 대한 머리를 쓰려고합니다.MongoDB가 포함 된 되풀이 이벤트 스키마

내 관심사는 주어진 시간 내에 발생하는 모든 이벤트를 저렴하게 검색하는 것입니다. 필자의 두 번째 관심사는 이벤트 체인 전체를 중단시키지 않고 단일 발생을 수정하고 변경하는 것입니다.

비슷한 질문을 한 다른 사람들을 볼 때, 나는 가능성을 생각해 냈습니다. 나는 그것에 완전하게 팔지 않으며, 올바른 방향으로 어떤 조언을 원할 것이다.

내 아이디어 : ... 각 이벤트 문서 내에서이

  • 밀접 표준 iCal의 변경 사항이 포함되어
  • 에 "발생"포함 된 문서 나 배열 필드와 일치 반복되는 문자열 필드 /에 편집 특정 발생 (예 : 설명 또는 시작 시간 변경 또는 단일 발생 취소).
  • 발생이 시작
  • 과 끝 필드는 재발 규칙

프로의 쉽게 조회 경계 정의 :

다른 이벤트에 연결을 변경 사항을 저장하고 여전히 유지할 수
  • 쉽게 조회를, 내 비즈니스 측면의 모델은 각 이벤트를 구성해야만합니다.

단점/잠재적 인 문제점 :

  • 이벤트를 편집하고, 사용자가 "모든 이벤트"로 적용되는 것으로 변경 내용을 표시하기로 결정하면 - 방법 변경되는 것을 이미 과거가 이벤트를 유지하는 것은
+0

저는 프로젝트에서 같은 질문을하고 있습니다. 당신은 무엇을 사용 했습니까? –

답변

2

이에 좋은 방법처럼 보인다 나를. "이미 과거의 이벤트를 변경하지 않으려면"단순히 플래그를 부울 플래그로 표시하십시오. 쿼리 및 업데이트 중에 해당 플래그와 시작/종료 날짜를 쉽게 사용할 수 있어야합니다.

또는 - 원래 이벤트의 종료 날짜를 설정하십시오. - 이벤트를 복제하고 새 이벤트에서 새 시작 날짜와 종료 날짜를 설정할 수 있습니다. - 복제 된 이벤트에이 일을 같은

뭔가 발행 수 필드를 비워 :

전 :

{ 
    'title' : "Gin O'Clock", 
    'recurrance' : 'DAILY', 
    'start_date' : '2012-01-01 17:00', 
    'end_date' : false, 
    'occurences' : [ 
     { 'date' : '2012-06-03 17:00', 'title' : "Jubilee Gin O'Clock" } 
    ] 
} 

후 : 도움이

{ 
    'title' : "Gin O'Clock", 
    'recurrance' : 'DAILY', 
    'start_date' : '2012-01-01 17:00', 
    'end_date' : '2012-06-05 17:00, 
    'occurences' : [ 
     { 'date' : '2012-06-03 17:00', 'title' : "Jubilee Gin O'Clock" } 
    ] 
}, 
{ 
    'title' : "Gin O'Clock an our earlier", 
    'recurrance' : 'DAILY', 
    'start_date' : '2012-06-06 16:00', 
    'end_date' : false, 
    'occurences' : [ 
    ] 
} 

희망을!

+1

어커런스가 미래의 어커런스를 오버라이드 할 수 있도록 어커런스 필드에 일종의 로직을 추가하는 것은 어떨까요?'{ 'recurrence': 'DAILY', 'start': '2012-01-01 17:00', 'end': false, 'occurrences': [{ 'start': '2012-01- 04 17:00 ','end ': false,'recurrence ':'WEEKLY '}]}'첫 번째부터 네 번째까지 이벤트가 매일 실행됨에 따라 해석됩니다. 그런 다음 네 번째 이후의 모든 발생은 매주 이루어집니다. –

관련 문제