Increasing MongoDB performance on multiple array fields

时间:2017-04-10 02:30:56

标签: arrays mongodb indexing

I have a large MongoDb collection, where users can search on multiple Array fields. How is the best way to index that? I saw that creating indexes for multiple Array indexes ends up with:

"Mongo::Error::OperationFailure: cannot index parallel arrays"

Example query:

db.collection.find(
   {category_ids: {$in: [object_id, object_id]}, 
    second_category_ids: $in: {[object_id, object_id]}
   }
)

1 个答案:

答案 0 :(得分:0)

根据mongoDB documentation,不允许在并行数组上使用多键索引。以下是文档的内容 -

  

因此,如果文档的多个要索引字段是数组,则无法创建复合多键索引。或者,如果已存在复合多键索引,则无法插入会违反此限制的文档。

我们可以做的最大值是分别索引两个字段,查询将使用它感觉到的最佳索引。如果您比查询计划程序有更好的想法,那么提示也可以用于使用特定索引。

或者您可以考虑重构您的架构。例如,子类别可以在不同的集合中进行。如果我了解有关数据模式和架构设计的更多信息,我可以提供帮助。