MongoDB 数据库引用

考虑这样的一个场景,我们在不同的集合中 (address_home, address_office, address_mailing, 等)存储不同的地址(住址,办公室地址,邮件地址等)。 这样,我们在调用不同地址时,也需要指定集合,一个文档从多个集合引用文档,我们应该使用 DBRefs 数据库引用。

DBRefs

DBRefs 引用格式

{ $ref :集合名称 , $id :引用的id , $db :数据库名称  }

$ref : 集合名称
$id  :引用的id
$db  : 数据库名称,可选参数

示例:

创建一个文档引用不同文档的数据:

先创建一个email文档用来存邮件地址。


db.email.insert({"email":'123@163.com'})

db.email.find()
{ "_id" : ObjectId("5af3fdfbb253f1e8c1400f75"), "email" : "123@163.com" }

DBRefs 引用刚才创建的文档

db.user.insert(
{
    "_id":ObjectId("52ffc33cd85242f436000004"),
    "name":"lilei",
    "address":{
    "$ref":"email",
    "$id":ObjectId("5af3fdfbb253f1e8c1400f75"),
    "$db":"mytest"
    }
})

address DBRef 字段指定了引用的地址文档是在 mytest 数据库下的 email 集合,id 为 ObjectId("5af3f976b253f1e8c1400f73")的文档对象。其中$db为可选参数,可以不填。

这种引用方式需要使用$ref 字段来反向查找email地址。下面演示如何查找:

var user = db.user.findOne({"name":"lilei"})
var dbref = user.address
db[dbref.$ref].find({"_id":(dbref.$id)})

查询结果:

数据库基础 all right reserved,powered by Gitbook文件修订时间: 2018-05-10 16:49:30