MongoDB之DBref(关联插入,查询,删除) 实例深入
来源:互联网 发布:长沙专业seo服务i5seo 编辑:程序博客网 时间:2024/05/19 04:29
如图所示,A,B,C三个Collection互相关联。 其中的数字为document的value值。
关于DBref的入门可以看 http://blog.csdn.net/crazyjixiang/article/details/6616678 这篇文章。
我们先建立A collection。
- > 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)
- > db.A.find()
- { "_id" : ObjectId("4e3f33ab6266b5845052c02b"), "value" : "1" }
- { "_id" : ObjectId("4e3f33de6266b5845052c02c"), "value" : "2" }
- { "_id" : ObjectId("4e3f33e06266b5845052c02d"), "value" : "9" }
- { "_id" : ObjectId("4e3f33e26266b5845052c02e"), "value" : "10" }
B collection以A collection的 _id为 ObjectId("4e3f33de6266b5845052c02c")作为Apid
所以:
- > var Ba={Apid:[new DBRef('A',ObjectId("4e3f33de6266b5845052c02c"))],value:3}
- > db.B.save(Ba)
- > var Ba={Apid:[new DBRef('A',ObjectId("4e3f33de6266b5845052c02c"))],value:4}
- > db.B.insert(Ba)
- > var Ba={Apid:[new DBRef('A',ObjectId("4e3f33de6266b5845052c02c"))],value:7}
- > db.B.insert(Ba)
- > var Ba={Apid:[new DBRef('A',ObjectId("4e3f33de6266b5845052c02c"))],value:8}
- > db.B.insert(Ba)
- > db.B.find()
- { "_id" : ObjectId("4e3f3dd96266b5845052c035"), "Apid" : [ { "$ref" : "A", "$id" : ObjectId("4e3f33de6266b5845052c02c") } ], "value" : 3 }
- { "_id" : ObjectId("4e3f3de16266b5845052c036"), "Apid" : [ { "$ref" : "A", "$id" : ObjectId("4e3f33de6266b5845052c02c") } ], "value" : 4 }
- { "_id" : ObjectId("4e3f3dec6266b5845052c037"), "Apid" : [ { "$ref" : "A", "$id" : ObjectId("4e3f33de6266b5845052c02c") } ], "value" : 7 }
- { "_id" : ObjectId("4e3f3df06266b5845052c038"), "Apid" : [ { "$ref" : "A", "$id" : ObjectId("4e3f33de6266b5845052c02c") } ], "value" : 8 }
C collection以B collection的 _id为 ObjectId("4e3f3de16266b5845052c036") 作为Apid
- > var Ca={Bpid:[new DBRef('B',ObjectId("4e3f3de16266b5845052c036"))],value:5}
- > db.C.save(Ca)
- > var Ca={Bpid:[new DBRef('B',ObjectId("4e3f3de16266b5845052c036"))],value:6}
- > db.C.save(Ca)
- > db.C.find()
- { "_id" : ObjectId("4e3f42f36266b5845052c03d"), "Bpid" : [ { "$ref" : "B", "$id" : ObjectId("4e3f3de16266b5845052c036") } ], "value" : 5 }
- { "_id" : ObjectId("4e3f42f96266b5845052c03e"), "Bpid" : [ { "$ref" : "B", "$id" : ObjectId("4e3f3de16266b5845052c036") } ], "value" : 6 }
查询
- <span style="font-size:16px;">> var a = db.B.findOne({"value":4})
- > a.Apid.forEach(function(ref){printjson(db[ref.$ref].findOne({"_id":ref.$id}));})
- { "_id" : ObjectId("4e3f33de6266b5845052c02c"), "value" : "2" }</span>
- > db.A.findOne({"_id":db.B.findOne().Apid[0].$id})
- { "_id" : ObjectId("4e3f33de6266b5845052c02c"), "value" : "2" }
其实好好想想引用不是必须的。
MongoDB 权威指南说了这么一句:
In short,the best time to use DBRefs are when you're storing heterogeneous references to documents in different collections.like when you want to take advantage of some additional DBRef-specific functionality in a driver or tool.
- MongoDB之DBref(关联插入,查询,删除) 实例深入
- MongoDB之DBref(关联插入,查询,删除) 实例深入
- MongoDB之DBref(关联插入,查询,删除) 实例深入
- MongoDB 通过 DBRef关联查询
- spring-data-mongodb 对象关联 @DBRef学习 之疑问
- NoSql的多表关联----Mongodb的DBRef的运用
- mongodb 多表关联的实现和DBRef理解,
- Hibernate 批量删除 批量 插入 关联查询
- mongoDB中的DBRef
- mongodb数据库引用DBRef
- mongodb关联查询----js
- DedeCms二次开发之简单的查询、插入、更新、删除操作实例
- DedeCms二次开发之简单的查询、插入、更新、删除操作实例
- DedeCms二次开发之简单的查询、插入、更新、删除操作实例
- spring-mongodb-DBRef的运用
- MongoDB 插入、更新、删除
- Mongodb 插入 条件查询
- SQL关联查询,关联更新,关联删除
- [剑指Offer]3.矩形覆盖
- ACEGI配置总结
- 在Windows下编译Mapnik的依赖库
- C++类与对象的进一步讨论(2)
- MySQL 修改mysqlroot密码
- MongoDB之DBref(关联插入,查询,删除) 实例深入
- vmware player 开机时出错:内部错误 解决办法
- 【游戏算法之连连看】我最开始想到的连连看的 消除算法。。。。。【补充】
- CAD drawOrder 实体显示顺序
- C++ 构造函数
- SQLServer触发器创建、删除、修改、查看...
- Ruby on rails 实战圣经:Part 1: 入门导览->Ruby on Rails 简介
- ps命令常用参数
- svn错误问题处理could not connect to server