mongodb - 建模 2 个具有关系的文档
mongodb - modeling 2 documents with relationship
我正在为我的文档建模,但现在遇到了问题:
在我的应用程序中,用户有一个他们可以接受的报价列表。所以我有两个文档,"users" 和 "offers"。我想向我的用户展示他们当时接受了哪些优惠。但是合作伙伴(插入报价的人)也应该看到哪个用户在什么时间接受了哪个报价。
我的第一个想法是在两个文档中使用嵌入式数据:
用户:
offers: {
accepted: [{
offer: {
type: Schema.Types.ObjectId,
ref: 'Offer'
},
time: { type: Date, default: Date.now() }
}]
}
优惠:
costumer: {
accepted: [{
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
time: { type: Date, default: Date.now() }
}]
}
亲:
方便查询
缺点:
重复数据
-
我的另一个想法是为此创建一个新文档:
接受的报价:
offer: {
type: Schema.Types.ObjectId,
ref: 'Offer'
},
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
time: { type: Date, default: Date.now() }
哪种解决方案会更好,或者有没有更好的方法?
谢谢
我的建议是在两个文档中嵌入数据。
在MongoDB中,数据模式应基于应用程序的要求。重复数据不像关系数据库那样是一个严重的问题。在这种情况下,User文档旨在容纳用户的应用程序,Offer文档旨在容纳合作伙伴的应用程序。
我正在为我的文档建模,但现在遇到了问题:
在我的应用程序中,用户有一个他们可以接受的报价列表。所以我有两个文档,"users" 和 "offers"。我想向我的用户展示他们当时接受了哪些优惠。但是合作伙伴(插入报价的人)也应该看到哪个用户在什么时间接受了哪个报价。
我的第一个想法是在两个文档中使用嵌入式数据:
用户:
offers: {
accepted: [{
offer: {
type: Schema.Types.ObjectId,
ref: 'Offer'
},
time: { type: Date, default: Date.now() }
}]
}
优惠:
costumer: {
accepted: [{
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
time: { type: Date, default: Date.now() }
}]
}
亲: 方便查询
缺点: 重复数据
-
我的另一个想法是为此创建一个新文档:
接受的报价:
offer: {
type: Schema.Types.ObjectId,
ref: 'Offer'
},
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
time: { type: Date, default: Date.now() }
哪种解决方案会更好,或者有没有更好的方法?
谢谢
我的建议是在两个文档中嵌入数据。
在MongoDB中,数据模式应基于应用程序的要求。重复数据不像关系数据库那样是一个严重的问题。在这种情况下,User文档旨在容纳用户的应用程序,Offer文档旨在容纳合作伙伴的应用程序。