2015-02-17 2 views
0

Я создал две коллекции «Пользователи» и «Сообщения».Как обновить документ в одной коллекции, когда документ другой коллекции изменен или обновлен в MongoDB

Пользователи Структура документа выглядит следующим образом:

{ 
    "_id": { 
     "$oid": "54dde0e32a2a999c0f00002a" 
    }, 
    "first_name": "Vamsi", 
    "last_name": "Krishna", 
    "email": "[email protected]", 
    "password": "5f4dcc3b5aa765d61d8327deb882cf99", 
    "date_of_birth": "1999-01-05", 
    "gender": "male", 
    "status": "Active", 
    "date_created": "2015-02-13 12:32:50" 
} 

Хотя структура сообщений документа:

{ 
    "_id": { 
     "$oid": "54e1a2892a2a99d00500002b" 
    }, 
    "post_description": "Test post 1", 
    "posted_by": { 
     "id": "54dde0e32a2a999c0f00002a", 
     "first_name": "Vamsi", 
     "last_name": "Krishna", 
     "gender": "male" 
    }, 
    "posted_on": "2015-02-16 08:55:53", 
    "comments": [], 
    "likes": { 
     "count": 0, 
     "liked_by": [] 
    } 
} 

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

Я использую PHP.

Спасибо!

ответ

0

У Mongodb нет понятия, подобного sql on update cascade, поэтому вы должны сделать это в своем приложении (при обновлении информации о пользователе обновите все другие документы, относящиеся к этому пользователю в других коллекциях).

Как вы, возможно, догадались, что это очень неэффективно, когда таких документов много, а это значит, что ваша схема плохая. Просто введите userID в свой документ, и это будет ссылка на вашу коллекцию пользователя.

+0

Благодарим за информацию. Я пытаюсь сделать это, используя PHP-кодирование. Как я могу получить информацию о пользователе, используя идентификатор пользователя, выполнив один запрос на поиск? Однако я сохраняю идентификатор пользователя в документе сбора сообщений. – vamsi

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