下面的示例显示了两个可能的文档结构,用于MongoDB 3.4上的联系人集合中的联系人。请注意联系人与他所属的广告系列之间的关系。通过使用ID作为关键字的对象或对象阵列的对象的模型关系
方法答:活动是保持活动作为键的对象:值对,其中键是系列ID和值其它运动数据。
{
"first_name": "John",
"last_name": "Doe",
"user_id": 1170,
"campaigns": {
3452: {
subscription_dt: ISODate("2017-01-28T19:00:00Z"),
score: 19
},
243: {
subscription_dt: ISODate("2017-01-15T16:45:00Z"),
score: 27
}
}
}
方法B:活动是它简单地保持运动作为对象的阵列。
{
"first_name": "John",
"last_name": "Doe",
"user_id": 1170,
"campaigns": [
{
campaign_id: 3452,
subscription_dt: ISODate("2017-01-28T19:00:00Z"),
score: 19
},
{
campaign_id: 243,
subscription_dt: ISODate("2017-01-15T16:45:00Z"),
score: 27
}
]
}
请想象在收集所以任何类型的查询:
- 这是查询的最佳方法呢?
- 是否有任何特定的查询使用某些解决方案难以编写?甚至不可能写?
- 哪个是更好性能的最佳方法? (我的意思是,例如,创建复合索引user_id,campaign_id)
PD:请为分析目的假设关系必须放在联系人文档中。我建议你不要浪费时间回复其他设计方案。
先进的感谢
谢谢@哈桑,我投了你,但我想等待其他可能的答案,然后接受你的答案作为正确的答案。 – Delmo