【发布时间】:2015-01-21 20:47:10
【问题描述】:
在我的用例中,我有超过 3000 个变量 id,我已将它们分配给其他集合作为 mongo db 中的外键。在另一个集合中,对于每个外键,有更多数量的文档包含列表类型中的一个字段。我需要通过满足每个外键列表的至少一个文档的大小大于0的条件来查询从3000中检索不同的外键。我目前正在使用以下查询作为示例。
db.values.distinct('variable',{variable:{$in:variableIds}, $nor:[{source: {$exists: false}},{source: {$size: 0}}]})
其中变量是“值”集合的外键,如下所示。
variableIds 是变量集合中作为主键的唯一 id 列表。
{
"_id" : ObjectId("546db048e4b0c0187ab9eefd"),
"dateNum" : 41274,
"source" : [
{
"value" : 625,
"formatCode" : "General"
}
],
"variable" : ObjectId("546db048e4b0c0187ab9eefc")
}
但由于$in 条件中有 3000 个 id,查询似乎很大并且需要更多时间来执行,是否有其他方法可以优化查询?
【问题讨论】:
标签: mongodb query-optimization