Definición
Nuevo en la versión 5.0.
Devuelve la covarianza muestral de dos valores numéricos expresiones que se evalúan utilizando documentos en la ventana $setWindowFieldsde la etapa.
$covarianceSamp solo está disponible en la $setWindowFields etapa.
$covarianceSamp sintaxis:
{ $covarianceSamp: [ <numeric expression 1>, <numeric expression 2> ] }
Comportamiento
$covarianceSamp 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$covariancePop, que devuelve0si 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 $covarianceSamp en la etapa $setWindowFields para obtener los valores de covarianza de muestra de las ventas de pasteles orderDate año y quantity valores:
db.cakeSales.aggregate( [ { $setWindowFields: { partitionBy: "$state", sortBy: { orderDate: 1 }, output: { covarianceSampForState: { $covarianceSamp: [ { $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 muestral para los valores deorderDateaños yquantityusando$covarianceSampejecutados en una ventana documentos.La ventana contiene documentos entre un límite inferior
unboundedy elcurrentdocumento en el resultado. Esto significa que$covarianceSampconfigura el campocovarianceSampForStatecon los valores de covarianza muestral para los documentos entre el inicio de la partición y el documento actual.
En esta salida, la covarianza de la muestra se muestra en el campo covarianceSampForState:
{ "_id" : 4, "type" : "strawberry", "orderDate" : ISODate("2019-05-18T16:09:01Z"), "state" : "CA", "price" : 41, "quantity" : 162, "covarianceSampForState" : null } { "_id" : 0, "type" : "chocolate", "orderDate" : ISODate("2020-05-18T14:10:30Z"), "state" : "CA", "price" : 13, "quantity" : 120, "covarianceSampForState" : -21 } { "_id" : 2, "type" : "vanilla", "orderDate" : ISODate("2021-01-11T06:31:15Z"), "state" : "CA", "price" : 12, "quantity" : 145, "covarianceSampForState" : -8.500000000000007 } { "_id" : 5, "type" : "strawberry", "orderDate" : ISODate("2019-01-08T06:12:03Z"), "state" : "WA", "price" : 43, "quantity" : 134, "covarianceSampForState" : null } { "_id" : 3, "type" : "vanilla", "orderDate" : ISODate("2020-02-08T13:13:23Z"), "state" : "WA", "price" : 13, "quantity" : 104, "covarianceSampForState" : -15 } { "_id" : 1, "type" : "chocolate", "orderDate" : ISODate("2021-03-20T11:30:05Z"), "state" : "WA", "price" : 14, "quantity" : 140, "covarianceSampForState" : 3 }