MongoDB中级---->关联多表查询
2014-04-10 16:52
435 查看
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.
^_^[root@:/usr/local/mongodb/bin]#./mongo
MongoDB shell version: 1.8.2
connecting to: test
> var a = {name:"C++"}
> db
test
> db.language.save(a)
> db.language.find()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
> var b = {name:"javascript"}
> db.language.save(b)
> db.language.find()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
{ "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
> lan = {name:"obj1",computer:[new DBRef('language',a._id)]}
{
"name" : "obj1",
"computer" : [
{
"$ref" : "language",
"$id" : ObjectId("4da32c897d2de864e0448e06")
}
]
}
> lan.computer[0]
{ "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") }
> lan.computer[0].fetch()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
> db.language.insert(lan)
> db.language.find()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
{ "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
{ "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1", "computer" : [ { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") } ] }
> db.language.findOne({name:"obj1"}).computer[0].fetch()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
> lan2 = {name:"obj2",computer:[new DBRef('language',b._id)]}
{
"name" : "obj2",
"computer" : [
{
"$ref" : "language",
"$id" : ObjectId("4da32cb17d2de864e0448e07")
}
]
}
> db.language.insert(lan2)
> db.language.find()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
{ "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
{ "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1", "computer" : [ { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") } ] }
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.
^_^[root@:/usr/local/mongodb/bin]#./mongo
MongoDB shell version: 1.8.2
connecting to: test
> var a = {name:"C++"}
> db
test
> db.language.save(a)
> db.language.find()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
> var b = {name:"javascript"}
> db.language.save(b)
> db.language.find()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
{ "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
> lan = {name:"obj1",computer:[new DBRef('language',a._id)]}
{
"name" : "obj1",
"computer" : [
{
"$ref" : "language",
"$id" : ObjectId("4da32c897d2de864e0448e06")
}
]
}
> lan.computer[0]
{ "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") }
> lan.computer[0].fetch()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
> db.language.insert(lan)
> db.language.find()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
{ "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
{ "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1", "computer" : [ { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") } ] }
> db.language.findOne({name:"obj1"}).computer[0].fetch()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
> lan2 = {name:"obj2",computer:[new DBRef('language',b._id)]}
{
"name" : "obj2",
"computer" : [
{
"$ref" : "language",
"$id" : ObjectId("4da32cb17d2de864e0448e07")
}
]
}
> db.language.insert(lan2)
> db.language.find()
{ "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
{ "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
{ "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1", "computer" : [ { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") } ] }
相关文章推荐
- mongodb数据查询(进阶篇)
- MondoDB介绍
- Mongodb 聚合 分组
- mongodb的pre-split,手动分片
- Mongodb启动命令mongod参数说明
- 安装及配置MONGODB CLUSTER
- 安装部署MONGODB分片集群
- MONGODB SHARDING
- MongoDB 内存使用情况分析
- MongoDB入门简介
- Mongodb数据库DBObject对象和Json数据的转化(用Gson操作)
- 从零开始学习Node.js例子八 使用SQLite3和MongoDB
- nodejs/express+mongodb/mongoose
- mongodb
- MonogDB -索引(一)概述
- MonogDB -索引 (三) GIS
- MongoDB - 索引 (二)使用
- Mongodb error: couldn't connect to server 127.0.0.1:27017 at src
- mongodb学习之五:聚合之group复习
- Centos上MongoDB数据库 Replica Sets +Sharding 方案实现