SELECT (a+b) as c FROM my_table ORDER BY c ASC;
Jak mogę zamówić w Mongo dwie kolumny sum?MongoDB: zamówienie przez dwa pola suma
SELECT (a+b) as c FROM my_table ORDER BY c ASC;
Jak mogę zamówić w Mongo dwie kolumny sum?MongoDB: zamówienie przez dwa pola suma
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.
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}}]
)
Jest bardzo brutalne rozwiązanie. :( – fl00r
Od strony strony pracy mb wygląda brutalnie, ale od strony wydajności zawsze jest szybszy niż jakiekolwiek obliczenia –
Wygląda brutalnie ze strony sql :) – fl00r