2013-05-09 3 views
0

참고 : 처음 MongoDB를 사용합니다.mongodb 문서의 요소 만료

기술 : PHP는 MongoDB를 시나리오 :

데이터는 제공하는 프로그램을 개최한다고 가정한다.

{ 
    LocationName: 'name of the location', 
    LocationAddress: 'Main street., Popular City, PC', 
    LocationManager: 'Mr. Manager', 
    LocationPhone: '555 555 1212', 
    Programs : 
      [ 
       { 
       ProgramName : 'Excellence Prgram', 
       ProgramStartDate : '12-05-2012', 
       ProgramEndDate : '3-15-2013' 
       }, 
       { 
       ProgramName : 'Excellence Prgram for me', 
       ProgramStartDate : '1-05-2012', 
       ProgramEndDate : '2-15-2013' 
       }, 
       { 
       ProgramName : 'Excellence Prgram for three', 
       ProgramStartDate : '1-05-2012', 
       ProgramEndDate : '4-15-2013' 
       } 
      ] 
} 

질문 : 문서처럼 보이는

  1. 무엇 컬렉션 쿼리 것, 시작 및 종료 날짜 조회하려면?
  2. 프로그램이 만료되고 만료 된 프로그램이 각 문서에 자주 추가됩니다. 문서에서 만료 된 프로그램을 유지하는 것은 어느 시점에서 비효율적이라고 생각합니다. 만료 된 프로그램을 어떻게 보관할 수 있습니까?

감사합니다.

+0

분명히 이것은 해결하기 힘든 문제입니다. – user1244179

답변

0

나를 용서해주세요. 그러나 나는 이런 종류의 대답을주는 것을 싫어합니다.

{ 
    _id : 1823098123908831809 
    ProgramName : 'Excellence Prgram', 
    ProgramStartDate : '12-05-2012', 
    ProgramEndDate : '3-15-2013' 
    Location : { 
     LocationName: 'name of the location', 
     LocationAddress: 'Main street., Popular City, PC', 
     LocationManager: 'Mr. Manager', 
     LocationPhone: '555 555 1212', 
} 

당신이 지금해야 문제는 활성 프로그램이 위치를 조회 할 수 있다는 것입니다 :

나는이 같은 문서 모양을 만들 것입니다 : 나는 근본적으로 당신이 저장 문서있어 방법을 변경할 것 , 비즈니스 규칙을 충족하는 프로그램 만 추출하는 것은 까다로울 수 있습니다.

이 reorg를 사용하면 비즈니스 규칙을 충족하는 날짜를 가진 컬렉션의 모든 문서에 대한 간단한 쿼리를 작성할 수 있습니다.

위치를 변경하는 위치는 더 복잡해 지지만 실제로는 사소한 사용 사례입니다. 활성 프로그램을 자주 질의합니다. 위치는 관리자를 거의 변경하지 않습니다.

이렇게하면 기록을 유지 관리 할 수도 있습니다. 관련 프로그램 실행에 대한 위치 정보 만 업데이트하는 경우 2013 년 5 월 우수 프로그램 실행은 Mains 거리의 이전 위치에서 매니저 (Mrs. Manager)와 진행되었음을 알 수 있습니다 (현재는 Front Street에서 개최 중이지만 매니저 부인).