与猫鼬一对一的关系?

时间:2015-08-16 18:59:30

标签: node.js mongodb mongoose

我知道如何使用以下类型的代码在Mongoose实体之间建立一对多的关系:

friends: [{type: ObjectId, ref: 'User'}]

但是如果我想只有一对一的关系怎么办 - 比如这个用户与哪个客户有关?

2 个答案:

答案 0 :(得分:7)

首先,MongoDB中的关系与基于SQL的数据存储中的关系之间存在巨大差异(您需要从一开始就明确这一点)。

MongoDB中的关系只是相关数据的表示。没有机制可以维持这些关系的完整性。

mongoose对refs的作用只是使用具有ref选项的字段来查询引用集合中的_id文档字段。这用于populate之类的操作(内部调用目标集合上的findById查询,并用文档替换引用的字段)。

清除后,您可以在字段中为引用的集合存储一个或多个ID,从而创建一对一或一对多的关系"。

因此,要为引用的集合存储单个ID,语法将为:

client: {type: Mongoose.Schema.Types.ObjectId, ref: 'Client'}  //No arrays, as we want to store a single ID only.

以同样的方式,您可以为引用的集合存储许多ID,如下所示:

friends: [{type: Mongoose.Schema.Types.ObjectId, ref: 'User'}] //The array stores multiple IDs, creating a one-to-many "relationship"

编辑:

确保开头有required Mongoose模块。

var Mongoose = require('mongoose');

答案 1 :(得分:0)

对于一对一关系,请使用嵌入式数据模型,因此您的应用程序可以通过一个查询来检索完整的信息检索。欲了解更多信息,请访问 https://docs.mongodb.com/manual/tutorial/model-embedded-one-to-one-relationships-between-documents/