node.js - 当手动使用新模型()时,是否可以在保存()之前修改文档,使用猫鼬更新运算符?
问题描述
使用 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()
?
解决方案
推荐阅读
- angular - 迁移到 Angular9 后错误附加的 Webpack 目录
- java - Android studio mysql 服务器超时/拒绝连接
- c# - 排序列表
- >
- python - 在 Centos 8 上部署 Django 项目,使用 Gunicorn、Nginx(Gunicorn.service 问题)
- python - 如何在 python 3.7.7 中安装 dbfread?
- c++ - 如何将 std::atomic_signal_fence() 与信号量和易失性一起使用?
- node.js - Sequelize 和 module.exports
- postgresql - PostgreSQL:阅读解释计划
- gcc - 如何使用 gcc 编译名称不以“.c”结尾的 C 程序?
- java - 如何使图像中的矢量居中?