0

我有一个名为 users 的集合,如下所示。

     db.users.find().pretty()
{
        "_id" : ObjectId("512efc206074b0e4bbdce792"),
        "login_id" : "dutchuser",
        "isBroker" : false

}

我还想使用 login_id 和 isBroker 字段为此用户集合应用索引。

db.users.ensureIndex( { "login_id": 1, "isBroker": 1 }, { unique: false } )

我担心的是大多数isBroker字段的值为false。那么我有没有可能以这种方式应用索引?

4

1 回答 1

1

您不能有条件地将过滤器应用于 MongoDB 中的索引。虽然您可能会重组数据或在架构中引入额外的、可能重复的字段,但我不相信这是一个合理的“优化”。

用于db.stats()实际测量数据库的大小,并db.{collectionname}.totalIndexSize()查看拥有您建议的索引的真正影响。

通过使用此索引:

db.users.ensureIndex( { "login_id": 1, "isBroker": 1 }, { unique: false } )

您只能使用涉及login_idandisBroker或 just的查询login_id。根据您运行的查询类型,您还可能会遇到这个当前未解决的问题,这可能会使简单的分组/排序isBroker效率低下(或者如果在某些时候它变得如此broker_type)。

于 2013-08-29T15:31:52.370 回答