根据 mongoDB 文档,不建议为大型数组创建多键索引,那么替代选项是什么?
我想在他们的一个联系人也开始使用该应用程序时通知我的应用程序用户,因此我必须上传和管理每个用户的联系人列表。我们正在使用带有副本集的 mongoDB 和两台辅助机器。mongo 可以处理具有数百个值的数组的多键索引吗?数十万用户的数百个联系人可能很难管理。
多键解决方案如下所示:
{
customerId: "id1",
contacts: ["aaa", "aab", "aac", .... "zzz"]
}
指数:createIndex({ contacts: 1 })
。
另一种解决方案是将每个联系人保存在自己的文档中,并保存与他相关的所有应用用户:
{
phone: "aaa",
contacts: ["id1", "id2", "id3"]
},
{
phone: "aab",
contacts: ["id1"]
},
{
phone: "aac",
contacts: ["id1"]
},
......
{
phone: "zzz",
contacts: ["id1"]
}
index: createIndex( { phone: 1 } )
两者在上传联系人列表时的写入性能都很差:
第一个是计算巨大的索引,第二个是并发更新大量文档。
有更好的方法吗?
我正在使用带有两台辅助机器的副本集,分片键有帮助吗?
谢谢