Я храню журнал сообщений, отправленных пользователям. Я использую поле «идентификатор» для идентификации пользователей. Идентификатором может быть идентификатор электронной почты или номер телефона.
Итак, схема:
{identifier: <email or phone>,
message_log: [ {
date: "2019-05-16T19:54:52.600Z",
status: "delivered"
},
{
"date": "2019-06-16T19:54:52.600Z",
"status": "bounced"
}
]
}
Message_log - это массив объектов. Теперь, когда я получаю статусы доставки некоторых новых сообщений, мне нужно найти их идентификаторы и вставить новый журнал в его message_log
массив , но , если для какого-либо идентификатора нет журналов, мне нужно его создать.
Я использовал этот код:
await MessageDeliveryModel.bulkWrite([
{
updateMany: {
filter: {identifier: {$in: deliveries}},
update: {
$push: { "message_log":
{'date': new Date(), 'status': 'delivered'}
},
$set: {'identifier': "$identifier"}
// deliveries is just a list of identifiers
// I just need it to set delivery[i] for 'identifier'
},
upsert: true,
},
}