在Mongo中更新时使用存储的值

时间:2019-05-16 20:13:43

标签: node.js mongodb amazon-web-services

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

0 个答案:

没有答案