我是MongoDB的新手,所以我的问题可能很简单......我想让我的用户上传他们的地址簿。该文件具有以下结构
{
"_id" : "56f29ecc2a00001800dbdf54",
"contacts" : [
{
"name" : "John",
"phoneNumber" : [
"+18144040000"
]
},
{
"name" : "Andrew ",
"phoneNumber" : [
"+14129123456"
]
}
]
}
我想通过电话号码进行搜索,以找到有相互联系的用户 即
{"contacts.phoneNumber":"+14129123456"}
我的问题是 - 添加此索引是否有效
db.addresses.createIndex( { "contacts.phoneNumber": 1 }, { unique: false }, {background: true} )
考虑到用户将经常从他的手机更新他的地址簿这一事实,该手机会覆盖当前数据或插入新数据。此上传是一个单独的文档,其中包含一组联系人,每个联系人都包含一组电话号码。 每个上传/更新将包含数百/数千条记录?
答案 0 :(得分:1)
您的索引有意义。注意效率在读写之间存在折衷。通常,期望用户界面对任何搜索(即读取)快速响应。因此,在特定领域创建索引是不可避免的。在此基础上,考虑到用例需要直接搜索或查询电话号码,对“电话号码”进行索引是正常的。
索引文档会降低写入性能。但是,这个特定的索引不会大幅降低写入性能。话虽如此,如果需要更多时间,您可能需要重新考虑UI设计以获得上传进度条,这是任何大型上传的典型UI设计。
此外,您还可以查看MongoDB中可用的写入关注选项。您可以配置写入问题,无论您是否期望来自驱动器的确认。
如果您考虑在没有确认的情况下处理写入问题,它会为您提供更好的写入性能。但是,大多数应用程序都希望在写入时确认写入是否成功。