【问题标题】:Increasing MongoDB performance on multiple array fields在多个数组字段上提高 MongoDB 性能
【发布时间】:2026-02-26 08:50:01
【问题描述】:

我有一个大型 MongoDb 集合,用户可以在其中搜索多个 Array 字段。最好的索引方法是什么?我看到为多个 Array 索引创建索引的结果是:

“Mongo::Error::OperationFailure: 无法索引并行数组”

查询示例:

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

【问题讨论】:

    标签: arrays mongodb indexing


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我有一个 Event 模型,其中包含 approvedbannedreviewed 和很快。这些总是被查询。但也可以搜索 country region city 等字段。这些请求取决于用户的行为。最后但并非最不重要的一点是,用户可以搜索 category_idsmusicstyle_ids 事件中的一个或两个,它们是数组。
    • 我做了一些谷歌,发现了这个*.com/questions/25059525/…