zoukankan      html  css  js  c++  java
  • MongoDB中级---->关联多表查询

    http://www.linuxidc.com/Linux/2011-08/41043.htm


    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") } ] }  

  • 相关阅读:
    基于python的种子搜索网站(三)项目部署
    Python 的 Geth 封装库 PyGeth
    主题: 002.04 Tkinter 星空大战
    python 打飞机项目 (实战一)
    python使用mysql的一些坑
    Python 变量与运算符
    字符流
    IO字节流(2)
    端口转发
    IO流(1)
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4926805.html
Copyright © 2011-2022 走看看