MongoDB教程 专题
您的位置:database > MongoDB教程专题 > MongoDB 数据库引用
MongoDB 数据库引用
作者:--    发布时间:2019-11-20 20:45:56

在上一章节mongodb关系中我们提到了mongodb的引用来规范数据结构文档。

mongodb 引用有两种:

  • 手动引用(manual references)
  • dbrefs

dbrefs vs 手动引用

考虑这样的一个场景,我们在不同的集合中 (address_home, address_office, address_mailing, 等)存储不同的地址(住址,办公室地址,邮件地址等)。

这样,我们在调用不同地址时,也需要指定集合,一个文档从多个集合引用文档,我们应该使用 dbrefs。


使用 dbrefs

dbref的形式:

{ $ref : , $id : , $db :  }

三个字段表示的意义为:

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

以下实例中用户数据文档使用了 dbref, 字段 address:

{
   "_id":objectid("53402597d852426020000002"),
   "address": {
   "$ref": "address_home",
   "$id": objectid("534009e4d852427820000002"),
   "$db": "w3cschoolcc"},
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "tom benzamin"
}

address dbref 字段指定了引用的地址文档是在 address_home 集合下的 w3cschoolcc 数据库,id 为 534009e4d852427820000002。

以下代码中,我们通过指定 $ref 参数(address_home 集合)来查找集合中指定id的用户地址信息:

>var user = db.users.findone({"name":"tom benzamin"})
>var dbref = user.address
>db[dbref.$ref].findone({"_id":(dbref.$id)})

以上实例返回了 address_home 集合中的地址数据:

{
   "_id" : objectid("534009e4d852427820000002"),
   "building" : "22 a, indiana apt",
   "pincode" : 123456,
   "city" : "los angeles",
   "state" : "california"
}
网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册