MongoDB ObjectId 学习笔记

简介

MongoDB 是一个流行的 NoSQL 数据库,它使用 ObjectIds 来表示每个文档的唯一标识符。ObjectIds 是由 12 个字节组成的十六进制字符串。

ObjectIds 的结构

ObjectIds 包含以下三个部分:

  • 时间戳
  • 机器标识符
  • 进程标识符和随机数

如何创建 ObjectIds

在 MongoDB 中可以使用 ObjectId() 方法来创建新的 ObjectIds,方法如下:

javascriptCopy Code
const { ObjectId } = require('mongodb'); const objectId = new ObjectId(); console.log(objectId); // 输出类似 5d7a51c74ae2b80faa4c1214 的字符串

如何使用 ObjectIds 查询文档

使用 ObjectIds 查询文档时,需要将字符串转换为 ObjectId 类型,方法如下:

javascriptCopy Code
const { ObjectId } = require('mongodb'); // 查询单个文档 const result = await collection.findOne({ _id: new ObjectId('5d7a51c74ae2b80faa4c1214') }); // 查询多个文档 const results = await collection.find({ _id: { $in: [new ObjectId('5d7a51c74ae2b80faa4c1214'), new ObjectId('5d7a51c74ae2b80faa4c1215')] } }).toArray();

实例

下面是一个示例,在一个名为 users 的集合中插入一个名为 Tom 的用户,并返回插入后的 _id 值:

javascriptCopy Code
const { MongoClient, ObjectId } = require('mongodb'); async function run() { const client = new MongoClient('mongodb://localhost:27017'); await client.connect(); const database = client.db('mydb'); const collection = database.collection('users'); const result = await collection.insertOne({ name: 'Tom' }); console.log(result.insertedId); await client.close(); } run();

其中,result.insertedId 返回的是插入后的 _id 值,类型为 ObjectId。