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

  • 相关阅读:
    KVM虚拟化学习笔记系列文章列表(转)
    centos 6.5安装docker报错(查看报错详细信息--推荐)
    利用JMX统计远程JAVA进程的CPU和Memory---jVM managerment API
    OpenJDK和JDK区别
    docker sshd image problem, session required pam_loginuid.so, cann't login
    ssh-keygen
    优秀的软件测试人员必需具备的素质
    java基础篇---I/O技术
    jstl long类型数据转换为日期格式
    apache-hadoop-1.2.1、hbase、hive、mahout、nutch、solr安装教程
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4926805.html
Copyright © 2011-2022 走看看