2014-03-26 31 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