Definición
Nuevo en la versión 5.0.
Devuelve la covarianza poblacional de dos números. expresiones que se evalúan utilizando documentos en la ventana $setWindowFieldsde la etapa.
$covariancePop solo está disponible en la $setWindowFields etapa.
$covariancePop sintaxis:
{ $covariancePop: [ <numeric expression 1>, <numeric expression 2> ] }
Comportamiento
$covariancePop comportamiento:
Ignora valores no numéricos, valores
nully campos faltantes en una ventana.Si la ventana contiene un documento,
nulldevuelve. (Compárese con, que$covarianceSampdevuelvenullsi la ventana contiene un documento).Si la ventana está vacía, devuelve
null.Si la ventana contiene un valor
NaN, devuelveNaN.Si la ventana contiene uno o más valores
Infinity, todos positivos o negativos, devuelveInfinity. El valorInfinitydevuelto tiene el mismo signo que los valoresInfinityde la ventana.Si la ventana contiene
Infinityvalores con signos diferentes, devuelveNaN.Si la ventana contiene un valor
decimal, devuelve un valordecimal.Si no se aplica ninguno de los puntos anteriores, devuelve un valor
double.
Los valores devueltos en orden de precedencia son los siguientes:
NaNInfinitydecimaldouble
Ejemplo
Crea una colección de cakeSales que incluya ventas de pasteles en el estado de California (CA) y Washington (WA):
db.cakeSales.insertMany( [ { _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"), state: "CA", price: 13, quantity: 120 }, { _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"), state: "WA", price: 14, quantity: 140 }, { _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"), state: "CA", price: 12, quantity: 145 }, { _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"), state: "WA", price: 13, quantity: 104 }, { _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"), state: "CA", price: 41, quantity: 162 }, { _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"), state: "WA", price: 43, quantity: 134 } ] )
Este ejemplo utiliza $covariancePop en la etapa para generar los valores de covarianza de la población para las ventas de pasteles $setWindowFields del orderDate año y los quantity valores:
db.cakeSales.aggregate( [ { $setWindowFields: { partitionBy: "$state", sortBy: { orderDate: 1 }, output: { covariancePopForState: { $covariancePop: [ { $year: "$orderDate" }, "$quantity" ], window: { documents: [ "unbounded", "current" ] } } } } } ] )
En el ejemplo:
partitionBy: "$state"particiona los documentos de la colección enstate. Existen particiones paraCAyWA.sortBy: { orderDate: 1 }ordena los documentos de cada partición pororderDateen orden ascendente (1), de modo que elorderDatemás antiguo sea el primero.
outputEstablece los valores de covarianza de la población para elorderDateaño y losquantityvalores utilizando la ejecución$covariancePopen una ventana de documentos.La ventana contiene documentos entre un
unboundedlímite inferior y elcurrentdocumento en la salida. Esto significa que establece$covariancePopelcovariancePopForStatecampo con los valores de covarianza de la población para los documentos entre el inicio de la partición y el documento actual.
En esta salida, la covarianza de la población se muestra en el campo covariancePopForState:
{ "_id" : 4, "type" : "strawberry", "orderDate" : ISODate("2019-05-18T16:09:01Z"), "state" : "CA", "price" : 41, "quantity" : 162, "covariancePopForState" : 0 } { "_id" : 0, "type" : "chocolate", "orderDate" : ISODate("2020-05-18T14:10:30Z"), "state" : "CA", "price" : 13, "quantity" : 120, "covariancePopForState" : -10.5 } { "_id" : 2, "type" : "vanilla", "orderDate" : ISODate("2021-01-11T06:31:15Z"), "state" : "CA", "price" : 12, "quantity" : 145, "covariancePopForState" : -5.666666666666671 } { "_id" : 5, "type" : "strawberry", "orderDate" : ISODate("2019-01-08T06:12:03Z"), "state" : "WA", "price" : 43, "quantity" : 134, "covariancePopForState" : 0 } { "_id" : 3, "type" : "vanilla", "orderDate" : ISODate("2020-02-08T13:13:23Z"), "state" : "WA", "price" : 13, "quantity" : 104, "covariancePopForState" : -7.5 } { "_id" : 1, "type" : "chocolate", "orderDate" : ISODate("2021-03-20T11:30:05Z"), "state" : "WA", "price" : 14, "quantity" : 140, "covariancePopForState" : 2 }