首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MongoDB 外键的基本使用

小小继续进行学习,这次学习的内容是MongoDB外键的基本使用。

表示表关系的方法

在传统的关系型数据库当中,表示表关系,数据是通过索引来完善。而在MongoDB中,表示表关系,使用的是嵌套,即,一个文档嵌套一个文档的方法,作为MongoDB的两个文档的关联,以及使用,reference link作为文档和文档之间的关联。

文档嵌套

使用可视化的

这里使用可视化的编辑器作为文档嵌套输入以下的文档对象

{

"ming": "ming",

"ming2": {

"ming3": "ming8"

}

}

插入成功以后如下

这样就完成了文档的嵌套,即,表示两个文档之间的关联。

使用JDK

这里使用JDK进行连接。首先添加依赖

org.mongodb

mongodb-driver

3.5.0

进行连接

try{

// 连接到 mongodb 服务

MongoClient mongoClient = new MongoClient( "106.53.115.12" , 27017 );

// 连接到数据库

MongoDatabase mongoDatabase = mongoClient.getDatabase("koa");

System.out.println("Connect to database successfully");

}catch(Exception e){

System.err.println( e.getClass().getName() + ": " + e.getMessage() );

}

进行插入

List collections = new ArrayList();

Document d1 = new Document();

d1.append("name", "三国演义").append("author", "罗贯中");

Document d2 = new Document();

d2.append("name", "红楼梦").append("author", d1);

collections.add(d2);

c.insertMany(collections);

查询出来的数据如下

{

"name" : "红楼梦",

"author": {

"name": "三国演义",

"author": "罗贯中"

}

}

此时就完成了文档的嵌套操作

外键查询

使用js语言,进行查询关联

这里使用new DBRef的方式做外键查询。此时对于DBRef具有以下字段。

$ref

该$ref字段包含引用文档所在的集合的名称。

$id

该$id字段包含_id引用文档中字段的值。

$db

可选的。包含引用文档所在的数据库的名称。只有一些驱动程序支持$db引用,该字段说明可以跨集合关联

这里对集合操作关联如下

// 保存集合的数据

> 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" }

进行集合关联,这里使用 new DBRef 方式完成集合的关联

// 通过添加new DBRef 关键字,完成对集合的关联,这里通过new DBRef作为关键字,其中A为key,ObjectId 为value,进行关联

> 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 }

使用mongo-java的方式操作

// 创建外键进行关联,其中外键为refB

// 其中选择对db数据库进行操作,选择id作为数据库的关联

DBRef refB = new DBRef(db,"transations", obj.get("_id"));

// 创建新的集合

DBObject subObj = new BasicDBObject();

// 外键插入

subObj.put("brand", refB);

// 进行保存

accounts.save(subObj);

查询的结果如下

可以看到其中$id 对应的值为其数据库mongodb的外键。这样就完成了对数据库的外键操作。

小明菜市场

推荐阅读

●学习 | egg.js 中间件和插件

●学习 | egg.js 从入门到精通

●熟悉 | Node.js之mogoose

●知新 | Koa 框架从入门到熟练第二章

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200720A0YILG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券