优化子属性中$存在的查询



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

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

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

在JohnnyHK的帮助下(参见mongo query - property存在吗?)有关更多信息),我有一个查询,通过执行以下操作:

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

现在我需要看看是否可以对集合建立索引以提高该查询的性能。

我不知道如何做到这一点,或者是否可以为这个索引。

建议吗?

这里发生了两件事。

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

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

在您的示例中,它可以是"properties.source"上的稀疏索引。/名称"字段。在字段上创建索引将显著提高查询查询时间。

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

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

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

相关内容

  • 没有找到相关文章

最新更新