texto sumar relacionar ejemplos ejemplo consultas complejas colecciones busquedas buscar avanzado mongodb group-by mongodb-query calculated-columns

sumar - relacionar dos colecciones en mongodb



Grupo MongoDB $ y formación de grupo explícita con columna calculada (1)

Estás en el camino correcto. En este caso, debe anidar operadores $cond como este:

db.UM.aggregate( { $project: { computed_column: {$cond: [{$gt: [''$Salary'', 30000]}, {$cond: [{$gt: [''$Salary'', 60000]}, ''Above 60K'', ''30K-60K'']}, ''Under 30K'']} }}, { $group: {_id: {Salary_Slab: ''$computed_column''}, count: {$sum: 1}}})

resultados:

[ { _id: { Salary_Slab: ''Above 60K'' }, count: 3 }, { _id: { Salary_Slab: ''30K-60K'' }, count: 1 }, { _id: { Salary_Slab: ''Under 30K'' }, count: 2 } ]

Considere este código en SQL que forma grupos basados ​​en un rango de salario:

;With TableWithComputedColumn as (
select
computedcolumn =
Case
when Salary<30000 then ''Under 30K''
when Salary>30000 and Salary<60000 then ''30K-60K''
else ''Above 60K''
end from Tbl_UserMaster
)
select computedcolumn, COUNT(*)
from TableWithComputedColumn group by computedcolumn

Quiero hacer esto en Mongo. Mi suposición es que la parte CTE me requerirá que primero emita {computed column} a una colección temporal y luego haga un $group en esa colección. Otra forma (y la que prefiero) podría ser usar $project para proyectar {computed column} como la primera secuencia en la canalización de agregación y luego realizar $group .

db.UM.aggregate( {$project: { "computed_column": { //something with $cond}} },
{$group: {_id: {Salary_Slab:"$computed_column"}, count: {$sum:1}}}
);

Por favor, también revise una pregunta similar que hice antes:

$ Sum condicional en MongoDB

Básicamente me da una salida pivotada. En esta situación, necesito salida no activada. Para comparar los dos, la respuesta a la otra pregunta creará tres columnas: {Menos de 30K, 30K-60K, Más de 60K} con una sola fila de conteos, mientras que necesito tres filas para Menos de 30K, 30K-60K y Más de 60K en una columna y sus respectivos conteos en la segunda columna.