javascript - 在集合上使用 updateOne 时如何避免重复插入
问题描述
我有一个 Mongoose 数据库对象,其中包含一个包含“用户签名”的集合,其中签名必须是唯一的,即集合中不能出现重复的签名。
我因此将unique: true
标志放在signature
模式对象的字段上,但这仍然不能阻止它重复,但它确实适用于title
查询
解决方案
您可以修改您的filter
和包含$elemMatch
条件,以确保您尝试插入数组的元素不存在:
let filter = { _id: id, signatures: { $not: { signature: signature } } };
因此,如果您尝试插入新signature
文档,则将找到该文档,_id
否则过滤器部分将不返回匹配的文档,并且update
不会应用您的文档。
推荐阅读
- ios - 我可以从 Apple Watch 获得任何唯一标识符号吗?
- python - Django:如何根据 user_id 显示名称?
- automated-tests - 有没有办法在 ios 上与物理设备进行快照比较?
- python-3.x - ValueError:您正在尝试将包含 58 层的权重文件加载到具有 55 层的模型中
- c# - TryParsing 从对象列表到 int | C#
- flutter - 如何在 Flutter 应用中实现双向滚动?
- botium-box - Botium - Botium 的登录凭据
- flutter - 是否有任何帮助 Twilio Sms 颤振应用程序的辅助功能或包
- javascript - 滚动时的 setState 使滚动变得迟钝
- r - R:是否可以根据 Rshiny 或 Flexdashboard 中的输入值创建新功能