Mongoose文档错误? 模型保存()numberAffected 1更新而创造?

混淆了Mongoose文档….它声明为model.js save():

product.sold = Date.now(); product.save(function (err, product, numberAffected) { if (err) .. }) 

该callback函数将接收三个参数,如果发生错误,则为err,保存的产品,以及在数据库中find并更新文档时将为1的numberAffected,否则为0。

当我插入一个新的文件到我的模型/数据库时,我得到了numberAffected 1。但从文档,1将是如果文档被发现…这不会意味着该文件存在以前,它会更新,而不是创build?

要清楚的是,我创build的文件总是新的,从来没有预先存在。 从来没有预先存在的文件被更新而不是插入。 然而,我得到号码的影响1

不,它不会,原因是.save()更多的是.update()方便的包装,但包括“upsert”function。 像这样想:

 Model.update( { _id: obj._id }, obj, { upsert: true }, function(err,numAffected) { return [err, obj, numAffected]; } ) 

不完全是实现,但它有助于可视化的方式。

因此,第三个参数是受影响的数字,但“更新”部分,如果这导致了一个实际上“插入”的新文档将是0。 就像从.update()方法返回的值一样,值将是受更新影响的文档的数量,但仅限于应用于现有文档的“更新”的位置。