为什么.save可以在Mongoose中工作,但不能在.update中使用upsert

时间:2013-11-23 00:03:00

标签: node.js mongodb mongoose

我的保存是:

        tx = new Transaction transaction

        tx.save (err) ->
            console.log err
            cb err

保存得很好。

    Transaction.update transaction, {upsert: true}, (err, num, raw) ->
      console.log err
      console.log num
      console.log raw

但是,我的更新不会包含文档。此外,它不会为err返回num和0。这是"mongoose": "~3.8.0"

1 个答案:

答案 0 :(得分:1)

update函数的第一个参数是匹配一个或多个文档的查询(reference)。

我希望对Transaction.update的调用只包含文档的_id,而不是整个对象。第二个参数是整个文档或使用更新运算符的对象。

你可能想要:

Transaction.update _id : transaction._id, transaction, upsert: true, 
   (err, num, raw)->    

或者,您可能希望使用其中一个记录的update operators来设置该交易的特定属性。

Transaction.update  _id : transaction._id,  $set :  { amount : 500 } ,
      upsert : true, (err, num, raw) ->