Welcome 微信登录

首页 / 数据库 / MySQL / MongoDB中级---->关联多表查询

DBRef is a more formal specification for creating references between documents.  DBRefs (generally) include a collection name as well as an object id.  Most developers only use DBRefs if the collection can change from one document to the next.  If your referenced collection will always be the same, the manual references outlined above are more efficient.
  1. ^_^[root@:/usr/local/mongodb/bin]#./mongo  
  2. MongoDB shell version: 1.8.2  
  3. connecting to: test  
  4. > var a = {name:"C++"}                                                                                             
  5. > db   
  6. test  
  7. > db.language.save(a)  
  8. > db.language.find()  
  9. "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }  
  10. > var b = {name:"javascript"}  
  11. > db.language.save(b)  
  12. > db.language.find()  
  13. "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }  
  14. "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }  
  15. > lan = {name:"obj1",computer:[new DBRef("language",a._id)]}  
  16. {  
  17.         "name" : "obj1",  
  18.         "computer" : [  
  19.                 {  
  20.                         "$ref" : "language",  
  21.                         "$id" : ObjectId("4da32c897d2de864e0448e06")  
  22.                 }  
  23.         ]  
  24. }  
  25. > lan.computer[0]  
  26. "$ref" : "language""$id" : ObjectId("4da32c897d2de864e0448e06") }  
  27. > lan.computer[0].fetch()  
  28. "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }  
  29. > db.language.insert(lan)                                                                                          
  30. > db.language.find()  
  31. "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }  
  32. "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }  
  33. "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1""computer" : [ { "$ref" : "language""$id" : ObjectId("4da32c897d2de864e0448e06") } ] }  
  34. > db.language.findOne({name:"obj1"}).computer[0].fetch()                                                           
  35. "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }  
  36. > lan2 = {name:"obj2",computer:[new DBRef("language",b._id)]}       
  37. {  
  38.         "name" : "obj2",  
  39.         "computer" : [  
  40.                 {  
  41.                         "$ref" : "language",  
  42.                         "$id" : ObjectId("4da32cb17d2de864e0448e07")  
  43.                 }  
  44.         ]  
  45. }  
  46. > db.language.insert(lan2)  
  47. > db.language.find()  
  48. "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }  
  49. "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }  
  50. "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1""computer" : [ { "$ref" : "language""$id" : ObjectId("4da32c897d2de864e0448e06") } ] }  
相关数据存放在一起,针对性的查询可以消除join,性能比分散存储要高且方便MongoDB之DBref(关联插入,查询,删除) 实例深入MongoDB 1000W级数据 Insert和Query和Delete性能测试相关资讯      MongoDB 
  • MongoDB 3.3.0 发布下载  (01月14日)
  • 使用MongoDB C#官方驱动操作  (12/31/2015 16:27:56)
  • CentOS 6.6下安装MongoDB 3.0.1  (12/21/2015 19:29:02)
  • MongoDB 3.2版WiredTiger存储引擎  (01月02日)
  • 进程监控工具Supervisor 启动  (12/26/2015 10:49:57)
  • MongoDB 3.2.1 RC0 发布下载  (12/18/2015 11:32:29)
本文评论 查看全部评论 (0)
表情: 姓名: 字数