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 类型:

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

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

  • PkFactory

  • _id 字段

  • 在单个操作中插入或更新

  • Retrieve Data

  • 修改文档

  • 插入文档

后退

Insert