Docs 菜单
Docs 主页
/ / /
Node.js
/ / /

为此对象生成自定义值 _id

在此页面上

  • Overview
  • 指定主键工厂
  • 更多信息

在本指南中,您可以了解如何使用 MongoDB Node.js 驱动程序通过主键工厂生成您自己的 _id 值。

主键工厂允许您在插入操作中不指定 _id 时,在文档中创建唯一标识符。默认主键工厂生成 ObjectId 值。

注意

更新或插入操作

由于无法确定是否要应用主键工厂,因此驱动程序不会在更新或插入操作中使用主键工厂。如果在更新或插入操作中指定了主键工厂,并且执行了插入操作,服务器会自动为该文档生成一个 ObjectId

如果要使用指定主键工厂,请执行查找操作,然后执行更新插入操作。

要指定主键工厂,请将 pkFactory 选项应用于您的 MongoClient 实例。

以下代码片段应用 pkFactory 选项生成 _id 类型为 uuid 的值:

const { UUID } = require('bson');
...
const client = new MongoClient(uri, {
pkFactory: { createPk: () => new UUID().toBinary() }
});

注意

数据一致性

如果插入的文档中的 _id 字段的类型与主键工厂指定的类型不同,则数据会不一致。

例如,如果您对生成 uuid 类型的主键工厂运行以下插入操作,则您的 _id 值将包含 uuidstring 类型:

collection.insertOne({ _id: "user1388", ... });

要了解有关本节中讨论的类型、接口和类的更多信息,请参阅以下资源:

← 插入文档