Я создал две коллекции "Пользователи" и "Посты".
Структура документов пользователей выглядит следующим образом:
{
"_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.
Благодарю!!
У Mongodb нет понятия, похожего на sql on update cascade
, поэтому вы должны сделать это в своем приложении (всякий раз, когда вы обновляете информацию о пользователе, обновляете все другие документы, относящиеся к этому пользователю в других коллекциях).
Как вы могли догадаться, это очень неэффективно, когда таких документов много, а это значит, что ваша схема плохая. Просто userID
в документе, и это будет ссылка на вашу коллекцию пользователей.