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

  • 相关阅读:
    走下神坛的内存调试器
    mysql在高内存、IO利用率上的几个优化点 (sync+fsync) 猎豹移动技术博客
    跃趣科技
    java 类型转换:
    ab ApacheBench web测试工具
    使用EPEL和REMI第三方yum源
    “too many open files" ----增大打开的文件数
    Tcpdump命令行 与 GUI Wireshark
    gcc -I -L -l区别
    rsyslog 报 WARNING: rsyslogd is running in compatibility mode.
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4926805.html
Copyright © 2011-2022 走看看