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想复杂关联查询的话,还是要考虑一下代码的复杂度和性能。
相关文章
- 详解MongoDB中的多表关联查询($lookup)
- MongoDB多表关联查询操作实例详解
- MongoDB 通过配置文件启动及注册服务
- 是Spring Data Mongodb,如何在不通过ID的情况下从另一个文档引用一个文档
- Spring Data Mongodb:如何转储通过QueryDsl生成的原始查询/命令?
- Mongodb:无法通过命令查看嵌入式文档的数据
- 如何通过mongojs模块从nodejs查询mongodb? (服务器是openshift)
- MongoDB 通过 DBRef关联查询
- MongoDB中多表关联查询($lookup)的深入讲解
- MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据