下面是一个简单的例子,演示了如何在 MongoDB 中使用数据库引用:
创建集合:
首先,我们创建两个集合,分别是 users 和 addresses。
// 创建 users 集合
db.createCollection("users")
// 创建 addresses 集合
db.createCollection("addresses")
插入数据:
接下来,我们向 users 和 addresses 集合中插入一些数据。
// 插入数据到 users 集合
db.users.insertOne({
"_id": 1,
"name": "John Doe",
"address": {
"$ref": "addresses",
"$id": 101
}
})
// 插入数据到 addresses 集合
db.addresses.insertOne({
"_id": 101,
"city": "New York",
"zipcode": "10001"
})
在上述示例中,我们在 users 集合的文档中使用了数据库引用,引用了 addresses 集合中 _id 为 101 的文档。
查询关联数据:
现在,我们可以查询 users 集合,并通过数据库引用的关联关系获取相关的地址信息。
// 查询 users 集合
db.users.find().pretty()
查询结果应该类似于以下内容:
{
"_id" : 1,
"name" : "John Doe",
"address" : {
"$ref" : "addresses",
"$id" : 101
}
}
获取关联数据:
如果需要获取关联的地址信息,可以使用 $lookup 操作符进行关联查询。
// 使用 $lookup 进行关联查询
db.users.aggregate([
{
$lookup: {
from: "addresses",
localField: "address.$id",
foreignField: "_id",
as: "user_address"
}
}
]).pretty()
上述查询将返回包含关联地址信息的文档,类似于以下内容:
{
"_id" : 1,
"name" : "John Doe",
"address" : {
"$ref" : "addresses",
"$id" : 101
},
"user_address" : [
{
"_id" : 101,
"city" : "New York",
"zipcode" : "10001"
}
]
}
这样,我们通过使用数据库引用建立了 users 集合中的文档和 addresses 集合中的文档之间的关联关系,实现了文档级的关联。请注意,使用数据库引用需要谨慎,具体的设计取决于应用程序的需求和查询模式。在实际应用中,有时使用嵌套文档或其他建模方式可能更合适,具体取决于业务逻辑。
转载请注明出处:http://www.zyzy.cn/article/detail/9257/MongoDB