Я новичок в MongoDb, но проект, в который я только что был вовлечен, использует его для хранения таких сообщений:
{
"_id": ObjectId("messageThreadId"),
"messages": [
{
"_id": ObjectId("messageId"),
"body": "Lorem ipsum..."
}, etc...]
"users": [
{
"_id": ObjectId("userId"),
"unreadMessages": ['messageId', 'messageId', etc...]
}
]
}
Мне нужно использовать pymon go для вставки нового messageThread
s, который должен (изначально) содержать одно сообщение. Однако я не понимаю, как построить списки users.unreadMessages
из messageId
s (которые должны содержать только недавно созданное исходное сообщение). Есть ли способ сослаться на _id
исходного сообщения до / в момент его создания из того же документа? Также стоит отметить, что unreadMessages
- это список строк, а не ObjectId()
s.
Нужно ли мне создавать messageThread
с пустым списком unreadMessages
, затем go назад и извлекать _id
исходного сообщения, которое только что было создано, а затем обновлять каждое unreadMessages
в списке пользователей? Мне кажется неправильным требовать несколько транзакций для вставки, но мне кажется неправильным вся эта схема.