2011-09-29 15 views

Odpowiedz

6

Nie można zrobić tego łatwo bez dodatkowej czynności.

Aby posortować według dowolnej obliczonej wartości, musisz ją najpierw zapisać w dokumencie lub w innych światach, musisz utworzyć dodatkowe pole "c" i zapisać a + b w nim z każdą aktualizacją/wstawieniem i tylko wtedy sortować "c" jak zwykle.

+3

Jest bardzo brutalne rozwiązanie. :( – fl00r

+0

Od strony strony pracy mb wygląda brutalnie, ale od strony wydajności zawsze jest szybszy niż jakiekolwiek obliczenia –

+0

Wygląda brutalnie ze strony sql :) – fl00r

2

Można osiągnąć jak tego zapytania:

db.mycol.aggregate(
    [{$match:{tag:"xxx"}}, 
    {$project:{tag:1, count_a:1, count_b:1, factor:{$add: ["$count_a", "$count_b"]}}}, 
    {$sort:{factor:-1}}] 
)