在JavaScript与MongoDB的开发中,_id
是一个非常重要的概念。以下是对 _id
的详细解释:
_id
是MongoDB中每个文档的默认和唯一标识符。_id
也是全局唯一的。_id
是一个 ObjectId
类型,这是MongoDB特有的12字节标识符。_id
的类型,只要保证其唯一性。_id
字段总是被存储在文档的开始位置,以便快速检索。_id
是索引的一部分,因此查询速度非常快。ObjectId
,但可以根据需要自定义 _id
的类型和格式。_id
作为唯一标识。_id
进行唯一标识和跟踪。_id
进行唯一标识。_id
:_id
。_id
是唯一的,或者让MongoDB自动生成 _id
。_id
时出错:_id
的类型不匹配,例如将字符串类型的 _id
当作 ObjectId
查询。_id
的类型与存储时一致。const { MongoClient, ObjectId } = require('mongodb');
async function insertDocument() {
const uri = 'your_mongodb_connection_string';
const client = new MongoClient(uri);
try {
await client.connect();
const database = client.db('testdb');
const collection = database.collection('testcollection');
// 使用默认的 ObjectId
const doc1 = { name: 'Alice' };
await collection.insertOne(doc1);
// 使用自定义的字符串作为 _id
const doc2 = { _id: 'custom_id_123', name: 'Bob' };
await collection.insertOne(doc2);
} finally {
await client.close();
}
}
insertDocument().catch(console.error);
async function findDocumentById(id) {
const uri = 'your_mongodb_connection_string';
const client = new MongoClient(uri);
try {
await client.connect();
const database = client.db('testdb');
const collection = database.collection('testcollection');
// 如果 id 是字符串,需要转换为 ObjectId
const query = typeof id === 'string' ? { _id: new ObjectId(id) } : { _id: id };
const document = await collection.findOne(query);
console.log(document);
} finally {
await client.close();
}
}
findDocumentById('custom_id_123').catch(console.error);
通过以上解释和示例代码,你应该对MongoDB中的 _id
有了全面的了解,并能够在实际开发中正确使用它。
618音视频通信直播系列
高校公开课
第五届Techo TVP开发者峰会
Elastic Meetup
第四期Techo TVP开发者峰会
云+社区技术沙龙[第17期]
腾讯云GAME-TECH游戏开发者技术沙龙
第五届Techo TVP开发者峰会
领取专属 10元无门槛券
手把手带您无忧上云