我有一個相當小的63k文件(總共2.5GB)的數據集。文檔示例:
{
_id : "[uniqueId]",
FormId : 10,
Name : "Name of form",
IsComplete : true,
Sections : [ many sections and can be large ]
}
我想通過FormId獲取文檔的總數。我對這個查詢得到了快速的結果(.15sec):
db.getCollection('collection').aggregate([
{ $sort : { FormId : 1 } }, //Index exists on FormId
{ $group : { _id : "$FormId", count : { $sum : 1 } } },
{ $sort : { "count" : -1 } }
])
我的問題是我需要的文件,其中{「IsComplete」:真正}的計數。我有兩個建立在兩個屬性上的索引,但是我意識到使用$ match運算符會掃描所有文檔。那麼如何有效地過濾$組計數?
這裏你不需要第一個'$ sort'階段。 – styvane
@Styvane沒有$ sort階段$組需要10秒鐘才能完成。爲什麼會發生?從$ sort開始使用索引。 – JayJohnsonDesigns