$objectToArray - Amazon DocumentDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

$objectToArray

L'operatore di $objectToArray aggregazione in Amazon DocumentDB converte un oggetto (o documento) in un array. L'input per l'operatore è un documento e l'output è costituito da un elemento di matrice per ogni coppia campo-valore nel documento di input. Questo operatore è utile quando è necessario utilizzare i singoli campi di un documento come matrice, ad esempio quando si desidera trovare il documento con il valore massimo o minimo per un determinato campo.

Parametri

  • expression: L'espressione del documento da convertire in una matrice.

Esempio (MongoDB Shell)

L'esempio seguente mostra come utilizzare l'$objectToArrayoperatore per trovare il documento con l'inventario massimo per una catena di negozi di noleggio video.

Crea documenti di esempio

db.videos.insertMany([ { "_id": 1, "name": "Live Soft", "inventory": { "Des Moines": 1000, "Ames": 500 } }, { "_id": 2, "name": "Top Pilot", "inventory": { "Mason City": 250, "Des Moines": 1000 } }, { "_id": 3, "name": "Romancing the Rock", "inventory": { "Mason City": 250, "Ames": 500 } }, { "_id": 4, "name": "Bravemind", "inventory": { "Mason City": 250, "Des Moines": 1000, "Ames": 500 } } ]);

Esempio di interrogazione

db.videos.aggregate([ { $project: { name: 1, videos: { $objectToArray: "$inventory" } } }, { $unwind: "$videos" }, { $group: { _id: "$name", maxInventory: { $max: "$videos.v" } } } ]);

Output

[ { "_id": "Bravemind", "maxInventory": 1000 }, { "_id": "Live Soft", "maxInventory": 1000 }, { "_id": "Romancing the Rock", "maxInventory": 500 }, { "_id": "Top Pilot", "maxInventory": 1000 } ]

Esempi di codice

Per visualizzare un esempio di codice per l'utilizzo del $objectToArray comando, scegliete la scheda relativa alla lingua che desiderate utilizzare:

Node.js
const { MongoClient } = require('mongodb'); async function findMaxInventory() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const videos = db.collection('videos'); const result = await videos.aggregate([ { $project: { name: 1, videos: { $objectToArray: "$inventory" } } }, { $unwind: "$videos" }, { $group: { _id: "$name", maxInventory: { $max: "$videos.v" } } } ]).toArray(); console.log(result); client.close(); } findMaxInventory();
Python
from pymongo import MongoClient def find_max_inventory(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] videos = db['videos'] result = list(videos.aggregate([ { '$project': { 'name': 1, 'videos': { '$objectToArray': '$inventory' } } }, { '$unwind': '$videos' }, { '$group': { '_id': '$name', 'maxInventory': { '$max': '$videos.v' } } } ])) print(result) client.close() find_max_inventory()