在sub属性中优化$的查询

时间:2015-05-18 21:07:01

标签: mongodb mongodb-query

我需要搜索另一个对象中存在的属性。 该集合包含如下文档:

"properties": {
    "source": {
        "a/name": 12837,
        "a/different/name": 76129
    }
}

如下所示,查询字符串的一部分来自变量。

在JohnnyHK的帮助下(有关详细信息,请参阅mongo query - does property exist?),我通过执行以下操作获得了一个有效的查询:

var name = 'a/name';
var query = {};
query['properties.source.' + name] = {$exists: true};
collection.find(query).toArray(function...

现在我需要查看是否可以对集合编制索引以提高此查询的性能。

我不知道如何做到这一点,或者甚至可以为此编制索引。

建议?

1 个答案:

答案 0 :(得分:1)

这里发生了两件事。

首先,您可能正在寻找稀疏索引。

http://docs.mongodb.org/manual/core/index-sparse/

在你的情况下,它可能是" properties.source.a / name"的稀疏索引。领域。在字段上创建索引将显着改善查询查找时间。

db.yourCollectionName.createIndex( { "properties.source.a/name": 1 }, { sparse: true } )

第二件事。总是当你想知道你的查询是快还是慢时,使用mongo控制台,运行你的查询及其结果调用解释方法。

db.yourCollectionName.find(query).explain(); 多亏了它,您将知道您的查询是否使用索引,必须检查多少文档才能完成查询以及其他一些有用的信息。