MongoDB 自增序列
MongoDB没有像SQL数据库那样支持开箱即用的自增功能。默认情况下,MongoDB使用12字节的ObjectId作为主键来唯一标识文档中的 _id 字段。然而,有些场景下我们可能希望_id字段具有一些自增的值,而不是使用ObjectId。
鉴于这在MongoDB中不是默认功能,我们可以根据MongoDB文档的建议,通过使用一个 counters 集合来编程实现这个功能。
使用计数器集合
考虑以下 products 文档。我们希望_id字段是一个 自增整数序列 ,从1、2、3、4一直到n。
为此,创建一个 counters 集合,用于跟踪所有序列字段的最后一个序列值。
现在,我们将使用以下文档将其插入到计数器集合中,其键为 productid -
字段 sequence_value 用于跟踪序列的最后一个值。
使用以下代码将该序列文档插入计数器集合中 −
创建Javascript函数
现在,我们将创建一个函数 getNextSequenceValue ,该函数将以序列名称作为输入,将序列号增加1,并返回更新后的序列号。在我们的例子中,序列名称是 productid 。
使用Javascript函数
现在我们将在创建新文档时使用函数getNextSequenceValue,并将返回的序列值分配为文档的_id字段。
使用以下代码插入两个示例文档−
如您所见,我们使用getNextSequenceValue函数为_id字段设置了值。
为了验证功能,让我们使用find命令检索文档-
上面的查询返回了具有自动递增_id字段的以下文档 –