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, se devuelve
null. (Compárese con$covarianceSamp, que devuelvenullsi 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
Infinityque son todos positivos o todos 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 ninguno de los puntos anteriores aplica, devuelve un valor de
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 el resultado. Esto significa que$covariancePopestablece el campocovariancePopForStatecon los valores de covarianza poblacional para los documentos entre el principio de la partición y el documento actual.
En esta salida, la covarianza poblacional 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 }