gpt4 book ai didi

javascript - MongoDB Schema 优化以保存用户联系人

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:31 25 4
gpt4 key购买 nike

我想设计一个用于存储用户联系人的架构。

这是我现有的架构:

用户架构

_id : ObjectId("5c53653451154c6da4623a77"),
name : “something”,
email : “something”,
password : “something”,

配置文件架构

"_id" : ObjectId("5c53653451154c6da4623a88"),
user_id - ref
mobile : “something”,
company” : “something”,
designation : “something”,
website : “something”,
social: {
youtube: {
type: String
},
twitter: {
type: String
},
facebook: {
type: String
},
linkedin: {
type: String
},
instagram: {
type: String
}
}

我可以想到两种接触模式的方法,但都有一些缺点:

第一种方法

"_id" : ObjectId("5c53653451154c6da4623a99"),
user_id - ref,
"contacts": [
{
name : “something”,
company : “something”,
designation : “something”,
website : “something”,
social: { something },
mobile : “something”
},
{
name : “something”,
company : “something”,
designation : “something”,
website : “something”,
social: { something },
mobile : “something”
},
...
]

上述结构的问题是,当用户更新其个人资料时,联系人字段无法获取更新的值。但在这种方法中,可以轻松查询和检索特定用户的所有联系人并将响应发回。

第二种方法

"_id" : ObjectId("5c53653451154c6da4623a99"),
user_id : ref,
contacts: [
profile_id,
profile_id,
profile_id,
profile_id,
profile_id,
profile_id,
...
]

在此结构中,当用户更新其个人资料时,联系人将具有更新的用户值。但这里的问题是,在查询时,我必须从联系人架构中获取个人资料 ID,然后查询个人资料架构并将值作为响应返回给客户端。

当有 30K-50K 联系人时会发生什么 - 我需要查询 DB 50K 次吗?或者有更好的方法吗?

使用 mongoose 在 Node.js 上构建。

最佳答案

基本上,您有一个需要关系数据库的场景。但你也可以在 mongo 中实现这一点。

您需要使用 Mongoose 的填充。用你的第二种方法。您存储个人资料 ID 的位置。

User.find({_id: '5c53653451154c6da4623a77'}).populate({
path:'profiles',
options: {
limit: 10,
skip: 0
}}).exec();

Mongoose populate

此查询将返回相关的配置文件。如果你有50K这样的数据。您必须限制一个请求中的数据。

注意:每个文档的 Mongodb 限制为 16mb。不可能存储那么多数据。

所以,重新考虑一下你的数据库。

关于javascript - MongoDB Schema 优化以保存用户联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59788454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com