我正在使用nodejs和typescript,并且正在为我的功能打字以获得自动完成。
目前,我有一个用于用户实体的模式
interface User {
"_id": string
"coach": {
"businessCard": string
}
"firstname": string
}
我正在为教练属性使用一个嵌套的对象,但是我的问题是:这是什么意义,在现场MongoDB创建了另一个对象,该对象在1到1的关系中引用。
- 这可能会降低表演
- 我有问题输入我的功能以限制可以针对打字稿的字段
让我们看看一个例子:
await this.client.collection<User>('User').findOneAndUpdate(
{ _id: new ObjectID(userId) },
{"coach.businessCard": "50"},
);
将更新嵌套对象。
但是,该语法会使用
以相同的方式工作interface User {
"_id": string
"coach.businessCard": string
"firstname": string
}
区别在于,现在我可以统一使用一个符合点符号的语法。
那么,与第二个扁平的符号相比,使用我给出的第一个符号的优势是什么?
最好的问候
使用嵌套文档一对一关系的优点如下:
1。它表示数据字段之间的连接。例如:要保存用户地址,我们需要采用多个字段,例如:
-> Address line 1
-> Address line 2
-> Locality
-> Region
-> Postcode
-> Building
-> Sub-Building
-> etc.
使用一对一的关系,我们可以将相关信息绑定在一个单元中:
:address: {
Address line 1: String ,
Address line 2: String,
Locality: String,
Region: String,
Postcode: Number,
Building: Number,
Sub-Building: Number,
etc: String
}
2。在从数据库中检索此类信息时很有帮助。例如:
->要获取完整的地址详细信息,我可以用一个键项目。
db.collection.find({},{ address: 1} )
->要获取特定的地址字段,我也可以在下面进行预测:
db.collection.find({},{ 'address.Locality': 1, 'address.Region': 1} )