Appearance
MongoDB 数据库引用
什么是 DBRef?
DBRef(Database Reference)是 MongoDB 的一种引用格式,可同时指定集合名与数据库名(可选),便于跨集合、跨库引用。格式为:
javascript
{ $ref: "集合名", $id: 引用文档的 _id, $db: "数据库名" } // $db 可选使用 DBRef 存储引用
javascript
db.authors.insertOne({ _id: 1, name: "作者A" });
db.books.insertOne({
title: "书名",
author: { $ref: "authors", $id: 1 }
});跨库时加上 $db:
javascript
{ $ref: "users", $id: ObjectId("..."), $db: "otherdb" }在应用层解析
应用根据 $ref 和 $id(及 $db)再查询对应集合得到完整文档。驱动可能提供类似 db.dereference(dbRef) 的辅助方法(以各语言驱动文档为准)。
与普通引用对比
| 方式 | 说明 |
|---|---|
| 简单引用 | 只存 _id,不存集合/库名,需应用层约定集合 |
| DBRef | 存集合(及库)名 + _id,可跨集合/库引用,适合引用目标不固定的场景 |
多数场景只存 _id 即可;需要跨集合、跨库或动态集合名时再考虑 DBRef。下一节介绍 MongoDB 覆盖索引查询。