Mongoose:通过推送数组中的对象进行更新

时间:2017-07-03 14:52:31

标签: arrays mongoose

这是我正在使用的模型:

name: {
  type: String
},
payment: {
  id: {
    type: String,
    required: true
  },
  cards: [
    {
      id: {
        type: String
      },
      is_default: {
        type: Boolean,
        "default": false
      }
    }
  ]
}

我想在cards数组中添加一张卡片,例如:

card =
  id: "some_token"
  is_default: true

我正在使用update方法将卡片推送到阵列,但它不会将卡片添加到文档中。相反,它只创建一个包含这些字段的新文档:

{
  id: "some_token",
  is_default: true,
  _id: someId
}

知道如何更新我定位的实际文档而不是创建新文档吗?

这是我的代码(使用CoffeeScript):

update_where =
  payment:
    id: "some_id"
update_push =
  $push:
    'payment.cards':
      id: card_token
      is_default: false

Customer.update update_where, update_push, {upsert: true}, (err, results) ->
  # Do something with the results

1 个答案:

答案 0 :(得分:0)

哦,我只是注意到了自己的错误。问题出在 where 声明中。 我在做:

payment:
  id: "some_id"

但正确的写法如下:

'payment.id': 'some_id'

它现在有效!