Skip to content

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 覆盖索引查询