索引的效率经常更新mongodb中的集合

时间:2016-07-12 06:32:45

标签: mongodb

我是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} )

考虑到用户将经常从他的手机更新他的地址簿这一事实,该手机会覆盖当前数据或插入新数据。此上传是一个单独的文档,其中包含一组联系人,每个联系人都包含一组电话号码。 每个上传/更新将包含数百/数千条记录?

1 个答案:

答案 0 :(得分:1)

您的索引有意义。注意效率在读写之间存在折衷。通常,期望用户界面对任何搜索(即读取)快速响应。因此,在特定领域创建索引是不可避免的。在此基础上,考虑到用例需要直接搜索或查询电话号码,对“电话号码”进行索引是正常的。

索引文档会降低写入性能。但是,这个特定的索引不会大幅降低写入性能。话虽如此,如果需要更多时间,您可能需要重新考虑UI设计以获得上传进度条,这是任何大型上传的典型UI设计。

此外,您还可以查看MongoDB中可用的写入关注选项。您可以配置写入问题,无论您是否期望来自驱动器的确认。

如果您考虑在没有确认的情况下处理写入问题,它会为您提供更好的写入性能。但是,大多数应用程序都希望在写入时确认写入是否成功。

https://docs.mongodb.com/manual/reference/write-concern/