【问题标题】:JS: ordinate access to mongoDBJS:对mongoDB的纵坐标访问
【发布时间】:2022-01-10 14:36:55
【问题描述】:

我有一个小问题,我想如何解决它,但我不知道这是不是正确的方法。

在我的项目中,我有几个函数,每次执行函数时,所有这些函数都必须使用顺序唯一的 id

例如:

person 1 runs function X using id 1
person 2 runs function Y using id 2
person 3 runs function Z using id 3
person 4 runs function Y using id 4
person 1 runs function Z using id 5
....

怎么做?

我想将该id 保存在mongoDB中的表中,并且每次在函数中使用它时,该函数都会递增它,但我认为这不是正确的方法,是吗?

那么,如果是正确的方式,如何协调对DB的访问? 就像如果 2 个人同时运行 2 个函数,将会从 DB 中获取相同的 ID,并且 绝对不能发生这种情况,每次调用一个函数时都会有一个 不同的 ID必须用,怎么办?

【问题讨论】:

  • 您使用的是哪个版本的 Mongo DB?

标签: javascript mongodb


【解决方案1】:

您可以使用findOneAndUpdate

例子:

db.collection.findOneAndUpdate(
   { "name" : "function_trigger_count" },
   { $inc: { "count: 1 } }
)

FindOneAndUpdate 保证查询的原子性

如果您使用的是 MongoDB 5.x 版本,您可以使用Transaction 功能来确保原子性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2021-07-21
    • 2013-08-14
    • 1970-01-01
    • 2011-03-31
    • 2022-11-22
    相关资源
    最近更新 更多