2013-05-09 5 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 вы можете написать простой запрос для всех документов в коллекции, имеющих даты, соответствующие вашим бизнес-правилам.

Места изменения деталей становятся более сложными, но это действительно незначительный случай использования. Вы часто запрашиваете активные программы. Места редко меняют менеджеров.

Это также позволит вам сохранить историю. Если вы обновляете только информацию о местоположении для соответствующих прогонов программы, у вас будет запись о том, что майская программа Excellence, проходившая в мае 2013 года, проходила в старом месте на улице Мэйнс-стрит, с господином менеджером (хотя он теперь находится на Фронт-стрит, запустите г-жа Менеджер).

Смежные вопросы