mongodb 如何在运行多个示例的扩展应用程序中的mongo DB集合中生成和存储唯一序列

8xiog9wr  于 2023-04-20  发布在  Go
关注(0)|答案(1)|浏览(107)

我在Azure App Service上部署了一个节点应用程序,并将其扩展到5个示例。
现在,在我们的应用程序中,我们已经公开了一些API,这些API将数据添加到我们的mongo DB集合detail中。
现在,这些细节需要被推送到另一个具有唯一引用ID的应用程序。因此,当将数据放入细节集合时,除了mongo DB Object Id之外,我们以顺序的方式生成reference_id。

reference_id  = order_category_id + order_sub_category_id + sequence_number + 1

但是,当多个请求同时针对同一类别并将数据添加到详细信息集合时,会生成相同的reference_id。
我怎么能阻止这种情况发生呢?
我已经尝试使用mongoose的unique Schema属性,但这也不起作用。我想在当前系统中生成唯一的引用ID。

5cnsuln7

5cnsuln71#

这通常通过向ID添加“机器”或“示例”引用来解决,以便跨扩展示例的并发请求不会重叠。
这也是MongoDB为其ObjectId所做的,并且是大规模分布式ID生成的常见方法。
此外,如果引用id的顺序很重要,您可能希望包括时间戳,并确保它是基于它进行排序的id的最高有效位/部分,同时保持总长度相同。

相关问题