在 MongoDB 中,集合中的每个文档都有一个名为“id”的字段,作为其唯一标识符。这个“id”字段充当主键,为每个文档提供了唯一标识。通过 ID 进行搜索是 MongoDB 中的一项常见操作,它允许我们根据文档的唯一标识符来检索特定的文档。
在本文中,我们将探讨如何在 MongoDB 中通过 ID 进行搜索,并通过相关的概念和示例来帮助我们有效地理解这一过程。
理解 MongoDB 中的 ObjectID
- 在 MongoDB 中,集合中的每个 document 都有一个名为
**_id**的唯一标识符。 - 这个字段由 MongoDB 自动生成,其类型为
ObjectId。 _id字段确保了集合中每个文档的唯一性,并默认进行索引以加快检索速度。- MongoDB 中的
find%20method%20in,and%20returns%20one%20by%20one.) 方法用于查询集合中的文档。 - 要根据文档的 INLINECODE1b02d5fe 搜索文档,我们可以将一个包含 INLINECODEa00c83d1 值的对象传递给
find方法。
语法:
db.collectionName.find({ _id: ObjectId("your_id_here") })
请将 INLINECODEd6d187a3 替换为我们的集合名称,并将 INLINECODE60567903 替换为我们想要搜索的实际 INLINECODE75f701a3 值。MongoDB 将返回具有匹配 INLINECODE0c0cb4ee 的文档。
MongoDB 中按 ID 搜索的示例
让我们设置一个环境:
为了理解如何在 MongoDB 中按 ID 搜索,我们需要一个集合以及一些文档,以便在这些文档上执行各种操作和 queries。在这里,我们将考虑一个名为 users 的集合,它包含如下所示的信息。
[
{ "_id": ObjectId("5f76e3d4b03f5d0012c279c7"), "name": "Alice", "age": 30 },
{ "_id": ObjectId("5f76e3e4b03f5d0012c279c8"), "name": "Bob", "age": 35 },
{ "_id": ObjectId("5f76e3f1b03f5d0012c279c9"), "name": "Charlie", "age": 40 },
{ "_id": ObjectId("5f76e3f9b03f5d0012c279ca"), "name": "David", "age": 45 },
{ "_id": ObjectId("5f76e404b03f5d0012c279cb"), "name": "Eve", "age": 50 },
{ "_id": ObjectId("5f76e40fb03f5d0012c279cc"), "name": "Frank", "age": 55 },
{ "_id": ObjectId("5f76e416b03f5d0012c279cd"), "name": "Grace", "age": 60 },
{ "_id": ObjectId("5f76e41eb03f5d0012c279ce"), "name": "Hannah", "age": 65 },
{ "_id": ObjectId("5f76e426b03f5d0012c279cf"), "name": "Ivy", "age": 70 },
{ "_id": ObjectId("5f76e42eb03f5d0012c279d0"), "name": "Jack", "age": 75 }
]
示例 1:简单搜索
让我们检索 “users” 集合中 “id” 等于 INLINECODEb0722663 的文档。
db.users.find({ _id: ObjectId("5f76e3d4b03f5d0012c279c7") })
输出结果:
{ "_id": ObjectId("5f76e3d4b03f5d0012c279c7"), "name": "Alice", "age": 30 }
示例 2:使用 Node.js 驱动程序通过 _id 进行搜索
- 让我们编写一个 Node.js 函数来连接 MongoDB 数据库,并使用其 ObjectID (
**5f76e3e4b03f5d0012c279c8**) 从 “users” 集合中检索文档。 - 将搜索结果记录到控制台。使用 INLINECODEe3d181fa 包中的 INLINECODE14c0d73e 和
**ObjectId**,并轻松处理错误。
const { MongoClient, ObjectId } = require(‘mongodb‘);
async function searchById() {
const uri = ‘mongodb://localhost:27017‘;
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
try {
await client.connect();
const database = client.db(‘mydb‘);
const collection = database.collection(‘users‘);
const result = await collection.findOne({ _id: new ObjectId("5f76e3e4b03f5d0012c279c8") });
console.log(‘Search result:‘, result);
} finally {
await client.close();
}
}
searchById().catch(console.error);
输出结果:
Search result: { _id: 5f76e3e4b03f5d0012c279c8, name: ‘Bob‘, age: 35 }
示例 3:使用 Mongoose 通过 _id 进行搜索
- 在使用 Mongoose 的 Node.js 应用程序中,为包含字段 “name”(字符串)和 “age”(数字)的 “User” 集合定义一个 schema(模式)。为 “User” 集合创建一个模型。
- 使用 INLINECODEeb85b4d0 方法在 “User” 集合中搜索 id 为
5f76e3f1b03f5d0012c279c9的文档,并将结果记录到控制台。处理搜索操作期间可能发生的任何错误。
“`
cons