我正在使用NodeJS和typescript,并且正在为我的函数进行键入,以便获得自动完成功能。
目前,我对用户实体有这样的架构
interface User {
"_id": string
"coach": {
"businessCard": string
}
"firstname": string
}
我正在使用一个嵌套对象作为coach属性,但是我的问题是:这样做的目的是什么,在MongoDB的背后创建一个以一对一关系引用的对象。
让我们看一个例子:
await this.client.collection<User>('User').findOneAndUpdate(
{ _id: new ObjectID(userId) },
{"coach.businessCard": "50"},
);
将更新嵌套对象。
但是使用
时,此语法的工作方式相同interface User {
"_id": string
"coach.businessCard": string
"firstname": string
}
区别在于,现在我可以统一使用一种与点表示法匹配的语法。
与第二个扁平化符号相比,使用我给出的第一个符号可能有什么优势?
最诚挚的问候
答案 0 :(得分:0)
使用嵌套文档一对一关系的优势如下:
1。。它表示数据字段之间的连接。例如:要保存用户地址,我们需要输入多个字段,例如:
typename
使用一对一关系,我们可以将相关信息绑定到一个单元中,如下所示:
-> Address line 1
-> Address line 2
-> Locality
-> Region
-> Postcode
-> Building
-> Sub-Building
-> etc.
2。。从数据库中检索此类信息很有用。例如:
->要获取完整的地址详细信息,我可以使用一个键进行投影。
address: {
Address line 1: String ,
Address line 2: String,
Locality: String,
Region: String,
Postcode: Number,
Building: Number,
Sub-Building: Number,
etc: String
}
->要获取特定的地址字段,我可以像下面这样进行投影:
db.collection.find({},{ address: 1} )