Mongodb索引或不索引

Mongodb索引或不索引,mongodb,indexing,Mongodb,Indexing,关于是否索引的快速问题。对于在文档数组中查找特定“用户id”的集合,经常会进行查询。见下文- _id:"bQddff44SF9SC99xRu", participants: [ { type:"client", user_id:"mi7x5Yphuiiyevf5", screen_name:"Bob", active:false }, { type:"agent", user

关于是否索引的快速问题。对于在文档数组中查找特定“用户id”的集合,经常会进行查询。见下文-

_id:"bQddff44SF9SC99xRu",
participants: 
[
    {
        type:"client",
        user_id:"mi7x5Yphuiiyevf5",
        screen_name:"Bob",
        active:false
    },
    {
        type:"agent",
        user_id:"rgcy6hXT6hJSr8czX",
        screen_name:"Harry",
        active:false
    }
]
}

在“participants.user_id”中添加索引是个好主意吗?数组经常添加到中,偶尔删除项

更新
在使用同一组数据进行本地测试之后,我添加了索引,这显然降低了mongo进程的高CPU使用率。由于这些文件只有少量更新,我认为这是正确的举措。我现在正在研究更多可能的索引和优化。

为什么要索引?查询时是否存在严重的延迟问题?或者你是在尝试提前优化

归根结底,这里有很多变量,很难回答。包括但不限于:

  • 多久进行一次查询
  • 集合中有多少文档
  • 每个文档中有多少用户
  • 插入文档后从文档中添加/删除用户的频率
  • 您是否需要优化收藏的插入/更新

可能索引不是答案,而是您如何构建数据。

您是否定期对其进行查询?相对于查询的性能增益,您能否接受增加的写入时间?这些通常是决定是否使用索引的因素。这里不应该影响你的是别人的意见。做对你有用的事情。所以是的,mongo进程的cpu使用率很高。我使用Mongodb Compass识别的特定查询似乎每秒执行几次。我可以看到,它每次都会搜索整个收藏(34000个,而且还在增长)。用户将至少被插入到文档中一次,并且任何进一步的添加或删除可能每小时发生10次。