MongoDB需要很长时间来查询

问题描述:

我有一个超过10000个文档的集合。每个文件大约10KB。 当我运行此查询:MongoDB需要很长时间来查询

News 
.find({topics: { '$elemMatch': { '$in': ['5606059d924327636fe3e150'] } }, state: 'APPROVED', is_removed: false}) 

需要我大约8秒完成查询。

我已经使用了字段的索引:主题,状态和is_removed。 explain()查询返回:“millis”:45.

我认为查询的结果是相当大的(10000 * 10KB),所以需要一段时间才能将数据拉到正确的位置?

请帮我解释一下,告诉我如何减少查询时间。

谢谢!

对于初学者:您的查询不必要的复杂。

db.collection.find({ 
    topics:{ "$in":["5606059d924327636fe3e150","5606059d924327636fe3e151"]}, 
    state:"APPROVED", 
    is_removed: false 
}) 

此外,你可能希望有一个指标:

db.collection.createIndex({ topics:1, state:1, is_removed:1 }) 
+0

谢谢您的回答。我需要寻找匹配的许多议题之一的文件,在这种情况下,我可以查询这样的: db.collection.find({ 主题:: [“5606059d924327636fe3e150”“5606059d924327636fe3e151”], 状态:”已批准“, is_removed:false }) – hiepnv

+0

@hiepnv相应地进行了编辑。 –

+0

因为主题是ObjectID的数组,所以上面的查询没有返回任何东西。你知道为什么吗? – hiepnv