MongoDB ObjectId 学习笔记
简介
MongoDB 是一个流行的 NoSQL 数据库,它使用 ObjectIds 来表示每个文档的唯一标识符。ObjectIds 是由 12 个字节组成的十六进制字符串。
ObjectIds 的结构
ObjectIds 包含以下三个部分:
- 时间戳
- 机器标识符
- 进程标识符和随机数
如何创建 ObjectIds
在 MongoDB 中可以使用 ObjectId()
方法来创建新的 ObjectIds,方法如下:
javascriptCopy Codeconst { ObjectId } = require('mongodb');
const objectId = new ObjectId();
console.log(objectId); // 输出类似 5d7a51c74ae2b80faa4c1214 的字符串
如何使用 ObjectIds 查询文档
使用 ObjectIds 查询文档时,需要将字符串转换为 ObjectId 类型,方法如下:
javascriptCopy Codeconst { 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 Codeconst { 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。