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想复杂关联查询的话,还是要考虑一下代码的复杂度和性能。
相关文章
- 表单生成器(Form Builder)之mongodb表单数据查询——关联查询
- MongoDB-aggregate流式计算:带条件的关联查询使用案例分析
- 详解MongoDB中的多表关联查询($lookup)
- MongoDB 集合间关联查询后通过$filter进行筛选
- [置顶] 写了一个PHP版本的MONGODB语法解析器,可以通过类似SQL的语法来进行MONGODB的查询,不知道有人需要不,分享一下吧
- 如何通过mongojs模块从nodejs查询mongodb? (服务器是openshift)
- MongoDB多表关联查询操作实例详解
- Spring Data Mongodb:如何转储通过QueryDsl生成的原始查询/命令?
- 三张表关联,通过条件查询
- 如何通过mongojs模块从nodejs查询mongodb? (服务器是openshift)