Моля, разгледайте тази връзка за моя въпрос. http://docs.mongodb.org/manual/core/aggregation-pipeline-optimization.
Той казва, че оптимизацията прилага проекция към главатаи се връща само _id & сума. Сега след прожекцията има поле за съвпадение. Но резултатът от проекта няма такива полета, тогава как се сравнява с резултата и ги филтрира.
Отговори:
0 за отговор № 1Въпросът ви е малко "абстрактен", но за да проверите точката, това, което наистина искате да направите за най-доброто оптимизация е да $match
на вашите условия в първи етап на тръбопровода:
db.collection.aggreagte([
// Match first
{ "$match": { "status": true } },
// Rest of the pipeline
])
Основното "Причина" защото това е, че можете всъщност adresss индекс с този първи етап. Ако сте го направили по късно в тръбопровода, тогава бихте могли не.
Така че се опитайте да оптимизирате по този начин, винаги.