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]}
}
)
答案 0 :(得分:0)
根据mongoDB documentation,不允许在并行数组上使用多键索引。以下是文档的内容 -
因此,如果文档的多个要索引字段是数组,则无法创建复合多键索引。或者,如果已存在复合多键索引,则无法插入会违反此限制的文档。
我们可以做的最大值是分别索引两个字段,查询将使用它感觉到的最佳索引。如果您比查询计划程序有更好的想法,那么提示也可以用于使用特定索引。
或者您可以考虑重构您的架构。例如,子类别可以在不同的集合中进行。如果我了解有关数据模式和架构设计的更多信息,我可以提供帮助。