我们可以应用索引来匹配mongoDB中的某个值

时间:2013-08-29 14:29:12

标签: mongodb

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

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

}

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

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

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

1 个答案:

答案 0 :(得分:1)

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

使用db.stats()来实际衡量数据库的大小,并使用db.{collectionname}.totalIndexSize()来了解您提出的索引的真正影响。

使用此索引:

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

您只能使用涉及login_idisBrokerlogin_id的查询。根据您运行的查询类型,您可能还会遇到this当前未解决的问题,这可能导致isBroker上的简单分组/排序效率低下(或者在某些时候变为broker_type例如)。