2011-09-29 24 views

risposta

6

Non si può fare facilmente senza un'azione extra.

Per ordinare su qualsiasi valore calcolato è necessario memorizzarlo in un documento prima o in altri mondi è necessario creare il campo aggiuntivo "c" e memorizzare un + b in esso con ogni aggiornamento/inserimento e solo dopo ordinare su 'c' come al solito.

+3

Si tratta di una soluzione molto brutale. :( – fl00r

+0

Dalla quantità di lavoro mb sembra brutale, ma dal lato delle prestazioni è sempre più veloce di qualsiasi calcolo –

+0

Sembra brutale dal lato sql :) – fl00r

2

è possibile ottenere in questo modo query:

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