【发布时间】:2017-03-23 04:00:32
【问题描述】:
下面的示例显示了两种可能的文档结构,可用于 MongoDB 3.4 上的联系人集合中的联系人。注意联系人和他所属的活动之间的关系。
方法 A:campaigns 是一个对象,它将活动保存为 key:value 对,其中 key 是活动 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:campaigns 是一个数组,它只是将活动作为对象保存。
{
"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:为了分析的目的,请假设关系必须放在联系文档中。我建议你不要浪费时间回复其他设计方案。
在此致谢
【问题讨论】:
标签: mongodb mongodb-query