View a markdown version of this page

$covarianceSamp - Amazon DocumentDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

$covarianceSamp

Nuevo a partir de la versión 8.0.2.

El $covarianceSamp operador de Amazon DocumentDB devuelve la covarianza de muestra de dos expresiones numéricas. Es un operador de ventana que solo se usa en la $setWindowFields etapa; no es válido en las etapas o. $group $bucket El operador se especifica en el output campo de la etapa y, si lo desea, puede definir los límites de la ventana con un window documento.

Parámetros

  • $covarianceSamptoma una matriz de dos elementos[ <expression1>, <expression2> ], donde cada elemento es una expresión numérica (una ruta de campo, por ejemplo"$x", una expresión o una constante). Devuelve el ejemplo de covarianza de las dos expresiones en los documentos de la ventana.

Ejemplo (MongoDB Shell)

En el ejemplo siguiente se dividen los documentosseries, se ordenan las particiones y se calcula la covarianza muestral de x toda la partición. t y

Cree documentos de ejemplo

db.measurements.insertMany([ { _id: 1, series: "A", t: 1, x: 1, y: 2 }, { _id: 2, series: "A", t: 2, x: 2, y: 5 }, { _id: 3, series: "A", t: 3, x: 3, y: 8 }, { _id: 4, series: "B", t: 1, x: 1, y: 8 }, { _id: 5, series: "B", t: 2, x: 2, y: 5 }, { _id: 6, series: "B", t: 3, x: 3, y: 2 } ]);

Ejemplo de consulta

db.measurements.aggregate([ { $setWindowFields: { partitionBy: "$series", sortBy: { t: 1 }, output: { covariance: { $covarianceSamp: [ "$x", "$y" ], window: { documents: ["unbounded", "unbounded"] } } } } } ]);

Salida

[ { "_id": 1, "series": "A", "t": 1, "x": 1, "y": 2, "covariance": 3 }, { "_id": 2, "series": "A", "t": 2, "x": 2, "y": 5, "covariance": 3 }, { "_id": 3, "series": "A", "t": 3, "x": 3, "y": 8, "covariance": 3 }, { "_id": 4, "series": "B", "t": 1, "x": 1, "y": 8, "covariance": -3 }, { "_id": 5, "series": "B", "t": 2, "x": 2, "y": 5, "covariance": -3 }, { "_id": 6, "series": "B", "t": 3, "x": 3, "y": 2, "covariance": -3 } ]

Todos los documentos de una partición reciben la misma covariance covarianza muestral de x y todos los documentos de esa partición: 3 para las series A (x e y aumentan juntas) y -3 para las series B (y disminuye a medida que x aumenta). La covarianza muestral se divide por, n - 1 en lugar den, por lo que su magnitud es mayor que la covarianza poblacional de los mismos datos.

Ejemplos de código

Para ver un ejemplo de código sobre el uso del $covarianceSamp operador en el $setWindowFields escenario, elija la pestaña correspondiente al idioma que desee utilizar:

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = new MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); try { await client.connect(); const db = client.db('test'); const measurements = db.collection('measurements'); await measurements.insertMany([ { _id: 1, series: "A", t: 1, x: 1, y: 2 }, { _id: 2, series: "A", t: 2, x: 2, y: 5 }, { _id: 3, series: "A", t: 3, x: 3, y: 8 }, { _id: 4, series: "B", t: 1, x: 1, y: 8 }, { _id: 5, series: "B", t: 2, x: 2, y: 5 }, { _id: 6, series: "B", t: 3, x: 3, y: 2 } ]); const result = await measurements.aggregate([ { $setWindowFields: { partitionBy: "$series", sortBy: { t: 1 }, output: { covariance: { $covarianceSamp: [ "$x", "$y" ], window: { documents: ["unbounded", "unbounded"] } } } } } ]).toArray(); console.log(result); } finally { await client.close(); } } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') try: db = client['test'] measurements = db['measurements'] measurements.insert_many([ { '_id': 1, 'series': 'A', 't': 1, 'x': 1, 'y': 2 }, { '_id': 2, 'series': 'A', 't': 2, 'x': 2, 'y': 5 }, { '_id': 3, 'series': 'A', 't': 3, 'x': 3, 'y': 8 }, { '_id': 4, 'series': 'B', 't': 1, 'x': 1, 'y': 8 }, { '_id': 5, 'series': 'B', 't': 2, 'x': 2, 'y': 5 }, { '_id': 6, 'series': 'B', 't': 3, 'x': 3, 'y': 2 } ]) result = list(measurements.aggregate([ { '$setWindowFields': { 'partitionBy': '$series', 'sortBy': { 't': 1 }, 'output': { 'covariance': { '$covarianceSamp': [ '$x', '$y' ], 'window': { 'documents': ['unbounded', 'unbounded'] } } } } } ])) print(result) finally: client.close() example()