node.js - Mongo : create if document doesn't exist, 否则什么也不做

标签 node.js mongodb mongoose

我有一个 Mongo 集合,它有两个字段,比如说“name”和“randomString”。

我想为名称创建一个随机字符串,前提是该字符串尚不存在。因此,对 { name: "SomeName"} 的第一个请求将导致保存,例如{ name: "someName", randomString: "abc"}。第二个请求不会执行任何操作。

是否有 mongo 命令可以实现此目的?我能找到的只是诸如 findOneAndUpdatereplaceOne 等,它们都支持可选的“upsert”,但它们在匹配时的行为是更新,我希望匹配时的行为什么都不做。

我不是在寻找像 this question 那样的 if-then 解决方案,因为我有竞争条件问题 - 我需要能够同时获取多个请求,而无需更新文档或使任何请求失败。

最佳答案

是的,有一个命令可以执行此操作,您可以使用 $addToSet 方法来执行此操作。 欲了解更多信息,请访问给定的链接:https://docs.mongodb.com/manual/reference/operator/update/addToSet/

PS:如果您对此问题仍有任何疑问,请随时进一步评论。

谢谢

关于node.js - Mongo : create if document doesn't exist, 否则什么也不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68210040/

相关文章:

node.js - 如何在 Hapi 中正确处理错误?

node.js - 使用 N-API 从 Node.JS 调用 C(++) 函数

java - 在不向域对象添加不必要的注释的情况下使用 Morphia 来持久化域对象的策略?

node.js - 如何从 Mongoose 查询中检索值

文件读取后 JavaScript 函数返回为空

node.js - 如何将 fluent-ffmpeg 屏幕截图的输出作为缓冲区而不是直接写入磁盘?

c - 如何获取 MongoDB 服务器上的数据库和集合列表?

node.js - 按日期排序 Mongoose 抛出错误记录超过 9

javascript - 为什么我的 Node Express 应用程序无法从 Mongoose 获取数据?

node.js - Mongodb插入空日期