View a markdown version of this page

$covariancePop - 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.

$covariancePop

Nuevo a partir de la versión 8.0.2.

El $covariancePop operador de Amazon DocumentDB devuelve la covarianza poblacional 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

  • $covariancePoptoma 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 la covarianza poblacional 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 poblacional de toda la partición x y y de ella. t

Cree documentos de muestra

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: { $covariancePop: [ "$x", "$y" ], window: { documents: ["unbounded", "unbounded"] } } } } } ]);

Salida

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

Todos los documentos de una partición reciben lo mismocovariance, es decir, la covarianza de x población de y todos los documentos de esa partición: 2 para las series A (x e y aumentan juntas) y -2 para las series B (y disminuye a medida que x aumenta).

Ejemplos de código

Para ver un ejemplo de código sobre el uso $covariancePop del 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: { $covariancePop: [ "$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': { '$covariancePop': [ '$x', '$y' ], 'window': { 'documents': ['unbounded', 'unbounded'] } } } } } ])) print(result) finally: client.close() example()