NOSQL MongoDB中的数据模型模型是否有缺点



我正在使用nodejs和typescript,并且正在为我的功能打字以获得自动完成。

目前,我有一个用于用户实体的模式

interface User {
  "_id": string
  "coach": {
    "businessCard": string
  }
  "firstname": string
}

我正在为教练属性使用一个嵌套的对象,但是我的问题是:这是什么意义,在现场MongoDB创建了另一个对象,该对象在1到1的关系中引用。

  1. 这可能会降低表演
  2. 我有问题输入我的功能以限制可以针对打字稿的字段

让我们看看一个例子:

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

最新更新