首页 > 解决方案 > 当手动使用新模型()时,是否可以在保存()之前修改文档,使用猫鼬更新运算符?

问题描述

使用 mongoose,他们经常提供文档,在其中当场在模型上创建新文档,然后修改字段并保存,如下所示:

const Tank = mongoose.model('Tank', yourSchema);

const small = new Tank({ size: 'small' });
small.size = 'big'
small.save()

// saves doc as {size:'big'}

我想知道的是是否可以使用这种创建文档的方式并使用猫鼬文档方法和运算符对其进行修改,例如:

small.update({size:'reallyBig'})
small.save()

//i would expect the document to now be saved with size:'reallyBig', but it doesn't seem to work this way

这个例子似乎没用,但我想看看这个基本原理是否可行,因为我想在文档保存到数据库之前使用一些猫鼬运算符进行更复杂的计算和更新。

我遇到的问题是这不会自动为文档创建 ObjectID,并且Document.updateOne()似乎在内部使用文档的 _Id 来查找它......但我什至没有保存它,所以我不确定它应该如何找到它。

我希望能够使用 $inc、$count、$addToSet 等操作,但是我是否缺少能够使用这些方法修改文档的东西save()

标签: node.jsmongodbmongoosedocument

解决方案


推荐阅读