Как обновить документ в одной коллекции, когда документ другой коллекции изменяется или обновляется в MongoDB

0

Я создал две коллекции "Пользователи" и "Посты".

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

{
    "_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.

Благодарю!!

Теги:

1 ответ

0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню