我正在存储发送给用户的消息日志。我使用“标识符”字段来识别用户。标识符可以是电子邮件ID或电话号码。
所以架构是:
{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,
},
}