MongoDB 通过 DBRef关联查询
  TEZNKK3IfmPf 2023年11月12日 22 0
A表插入数据:
 var a={value:"1"}  
 var b={value:"2"}  
 var c={value:"9"}  
 var d={value:"10"} 
db.A.save(a)  
db.A.save(b)        
db.A.save(c)   
db.A.save(d) WriteResult({ "nInserted" : 1 })
 db.A.save(b)        
WriteResult({ "nInserted" : 1 })
 db.A.save(c)   
WriteResult({ "nInserted" : 1 })
db.A.save(d) 
WriteResult({ "nInserted" : 1 })
 db.A.find()
{ "_id" : ObjectId("565eb6d14eae52027fb3e313"), "value" : "1" }
{ "_id" : ObjectId("565eb6d24eae52027fb3e314"), "value" : "2" }
{ "_id" : ObjectId("565eb6d24eae52027fb3e315"), "value" : "9" }
{ "_id" : ObjectId("565eb6d24eae52027fb3e316"), "value" : "10" }
B表插入数据:
> var Ba={Apid:[new DBRef('A',ObjectId("565eb6d24eae52027fb3e314"))],value:3}                        
> db.B.save(Ba)  
var Ba={Apid:[new DBRef('A',ObjectId("565eb6d24eae52027fb3e314"))],value:4}  
db.B.insert(Ba)                                                              
var Ba={Apid:[new DBRef('A',ObjectId("565eb6d24eae52027fb3e314"))],value:7}  
db.B.insert(Ba)                                                              
var Ba={Apid:[new DBRef('A',ObjectId("565eb6d24eae52027fb3e314"))],value:8}  
db.B.insert(Ba) WriteResult({ "nInserted" : 1 })
> var Ba={Apid:[new DBRef('A',ObjectId("565eb6d24eae52027fb3e314"))],value:4}  
> db.B.insert(Ba)                                                              
WriteResult({ "nInserted" : 1 })
> var Ba={Apid:[new DBRef('A',ObjectId("565eb6d24eae52027fb3e314"))],value:7}  
> db.B.insert(Ba)                                                              
WriteResult({ "nInserted" : 1 })
> var Ba={Apid:[new DBRef('A',ObjectId("565eb6d24eae52027fb3e314"))],value:8}  
> db.B.insert(Ba) 
WriteResult({ "nInserted" : 1 })
> db.B.find();
{ "_id" : ObjectId("565eb7514eae52027fb3e317"), "Apid" : [ DBRef("A", ObjectId("565eb6d24eae52027fb3e314")) ], "value" : 3 }
{ "_id" : ObjectId("565eb7514eae52027fb3e318"), "Apid" : [ DBRef("A", ObjectId("565eb6d24eae52027fb3e314")) ], "value" : 4 }
{ "_id" : ObjectId("565eb7514eae52027fb3e319"), "Apid" : [ DBRef("A", ObjectId("565eb6d24eae52027fb3e314")) ], "value" : 7 }
{ "_id" : ObjectId("565eb7524eae52027fb3e31a"), "Apid" : [ DBRef("A", ObjectId("565eb6d24eae52027fb3e314")) ], "value" : 8 }
C表数据:
> var Ca={Bpid:[new DBRef('B',ObjectId("565eb7514eae52027fb3e318"))],value:5}                        
> db.C.save(Ca)                                                                
var Ca={Bpid:[new DBRef('B',ObjectId("565eb7514eae52027fb3e318"))],value:6}  
db.C.save(Ca) WriteResult({ "nInserted" : 1 })
> var Ca={Bpid:[new DBRef('B',ObjectId("565eb7514eae52027fb3e318"))],value:6}  
> db.C.save(Ca) 
WriteResult({ "nInserted" : 1 })
> db.C.find()
{ "_id" : ObjectId("565eb7a04eae52027fb3e31b"), "Bpid" : [ DBRef("B", ObjectId("565eb7514eae52027fb3e318")) ], "value" : 5 }
{ "_id" : ObjectId("565eb7a14eae52027fb3e31c"), "Bpid" : [ DBRef("B", ObjectId("565eb7514eae52027fb3e318")) ], "value" : 6 }
关联查询:
> var a = db.B.findOne({"value":4})
> a.Apid.forEach(function(ref){printjson(db[ref.$ref].findOne({"_id":ref.$id}));})
{ "_id" : ObjectId("565eb6d24eae52027fb3e314"), "value" : "2" }
> db.A.findOne({"_id":db.B.findOne().Apid[0].$id})
{ "_id" : ObjectId("565eb6d24eae52027fb3e314"), "value" : "2" }

以上例子是通过ObjectId关联查询的,也可以是其他字段,总之操作起来很不方便,而且这里只是最简单的关联查询,还没有聚合操作,所以如果用mongodb想复杂关联查询的话,还是要考虑一下代码的复杂度和性能。
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月14日   56   0   0 mongodb
  TEZNKK3IfmPf   2023年11月14日   20   0   0 mongodb
  TEZNKK3IfmPf   2023年11月14日   23   0   0 mongodbmysql
  TEZNKK3IfmPf   2023年11月15日   42   0   0 shiromongodb
  TEZNKK3IfmPf   2023年11月15日   29   0   0 mongodbjava
  TEZNKK3IfmPf   2024年03月29日   58   0   0 mongodb
  TEZNKK3IfmPf   2023年11月15日   27   0   0 mongodb
TEZNKK3IfmPf