2014-03-26 51 views
1

請查看此鏈接以查看我的問題。 http://docs.mongodb.org/manual/core/aggregation-pipeline-optimizationMongo Aggregation Framework中的投影優化

它說優化將投影應用到頭部並返回_id &的數量。現在在投影之後,狀態字段有匹配。但是項目結果沒有這些字段,那麼結果如何匹配並過濾它們。

+1

仔細閱讀:「優化階段將投影應用於管道的頭部,使得只有_id和金額字段在$ match階段返回到生成的文檔中。」 – Sikorski

回答

0

您實際的問題是有點「抽象」,但驗證點,你真的想爲最好優化做什麼是$match你的條件在管道的第一階段:

db.collection.aggreagte([ 

    // Match first 
    { "$match": { "status": true } }, 

    // Rest of the pipeline 

]) 

主要「理性」因爲這是你可以實際上adresss與第一階段的指標。如果你在後面正在管道中,那麼你可以而不是

所以試着用這種方法優化,總是

+0

這與投影無關 – Sammaye

+0

@Sammaye匹配的索引**僅**發生在管道的** intial **階段。在這個階段之後,你不能** **和** ** **。這是否使你清楚**? –

+0

Samaya你有我的問題。 @Neil,我認爲文檔說它會運行投影,發出_id和數量然後匹配。由於輸出沒有「狀態」,它將如何過濾記錄。「MongoDB將投影應用於管線頭部」意味着投影將首先應用,或者將在匹配後應用。 – seeker