View a markdown version of this page

$ CovariancePop - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

$ CovariancePop

Neu ab Version 8.0.2.

Der $covariancePop Operator in Amazon DocumentDB gibt die Populationskovarianz zweier numerischer Ausdrücke zurück. Es handelt sich um einen Fensteroperator, der nur in der $setWindowFields Phase verwendet wird. In den $group Stufen oder ist er nicht gültig. $bucket Sie geben den Operator unter dem output Feld der Bühne an und definieren optional die Fenstergrenzen mit einem window Dokument.

Parameter

  • $covariancePopverwendet ein Array mit zwei Elementen[ <expression1>, <expression2> ], wobei jedes Element ein numerischer Ausdruck ist (ein Feldpfad"$x", z. B. ein Ausdruck oder eine Konstante). Es gibt die Populationskovarianz der beiden Ausdrücke in den Dokumenten im Fenster zurück.

Beispiel (MongoDB Shell)

Das folgende Beispiel partitioniert die Dokumente nachseries, sortiert jede Partition nach t und berechnet die Populationskovarianz von x und y über die gesamte Partition.

Erstellen Sie Beispieldokumente

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 } ]);

Beispiel für eine Abfrage

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

Ausgabe

[ { "_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 } ]

Jedes Dokument in einer Partition erhält dieselbe covariance Kovarianz der Grundgesamtheit aller Dokumente in dieser Partition x und y für alle Dokumente in dieser Partition: 2 für Reihen A (X und Y nehmen zusammen zu) und -2 für Reihen B (y nimmt ab, wenn X zunimmt).

Codebeispiele

Um ein Codebeispiel für die Verwendung des $covariancePop Operators in der $setWindowFields Phase anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

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()