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à.
$bucketAuto
Nuovo dalla versione 8.0.2.
La fase di $bucketAuto aggregazione in Amazon DocumentDB raggruppa automaticamente i documenti di input in un numero specificato di bucket in base a un'espressione specificata. A differenza $bucket di quanto avviene quando si definiscono esplicitamente i limiti dei bucket, i limiti $bucketAuto vengono determinati automaticamente in modo che i documenti siano distribuiti nel modo più uniforme possibile sul numero di bucket richiesto. Ciò può essere utile quando si desidera classificare i dati in un numero fisso di gruppi senza conoscere in anticipo la distribuzione dei valori.
Parametri
-
groupBy(obbligatorio): l'espressione che specifica il valore in base al quale raggruppare. -
buckets(obbligatorio): un numero intero positivo che specifica il numero di bucket in cui sono raggruppati i documenti. A seconda dei documenti di input e dell'groupByespressione, il numero effettivo di bucket può essere inferiore al numero specificato. -
output(opzionale): un oggetto che specifica le informazioni da emettere per ogni bucket. È possibile utilizzare operatori di accumulo come$sum,$avg$min, e$maxper calcolare le aggregazioni per ogni bucket. Se omesso, ogni bucket genera un campo per impostazione predefinita.count -
granularity(opzionale): una stringa che specifica la serie numerica preferita da utilizzare per i limiti del bucket. Questo aggancia i limiti calcolati a una progressione numerica standard. Questo parametro è disponibile solo se tutti igroupByvalori sono numerici e nessuno lo è.NaNI valori validi sono:R5R10,R20,R40,R80,1-2-5,E6,E12,E24,,E48,E96E192, ePOWERSOF2.
Output
Ogni bucket viene restituito come documento separato che contiene un _id oggetto che descrive i limiti del bucket:
-
_id.min: Il limite inferiore incluso del bucket. -
_id.max: Il limite superiore del secchio. Questo limite è esclusivo per ogni bucket tranne l'ultimo bucket della serie, dove è incluso.
Esempio (MongoDB Shell)
L'esempio seguente dimostra come utilizzare la $bucketAuto fase per raggruppare i dati di vendita in bucket in base al prezzo.
Crea documenti di esempio
db.sales.insertMany([ { item: "abc", price: 10, quantity: 2, date: new Date("2020-09-01") }, { item: "def", price: 20, quantity: 1, date: new Date("2020-10-01") }, { item: "ghi", price: 5, quantity: 3, date: new Date("2020-11-01") }, { item: "jkl", price: 15, quantity: 2, date: new Date("2020-12-01") }, { item: "mno", price: 25, quantity: 1, date: new Date("2021-01-01") } ]);
Esempio di interrogazione
Il comando seguente raggruppa i documenti di esempio in tre fasce in base al prezzo:
db.sales.aggregate([ { $bucketAuto: { groupBy: "$price", buckets: 3, output: { "count": { $sum: 1 }, "totalQuantity": { $sum: "$quantity" } } } } ])
Output
Questo comando restituisce il seguente output:
[
{ _id: { min: 5, max: 15 }, count: 2, totalQuantity: 5 },
{ _id: { min: 15, max: 25 }, count: 2, totalQuantity: 3 },
{ _id: { min: 25, max: 25 }, count: 1, totalQuantity: 1 }
]
Esempio di interrogazione con granularità
L'esempio seguente aggiunge l'granularityopzione per agganciare i limiti del bucket calcolati a potenze di 2.
db.sales.aggregate([ { $bucketAuto: { groupBy: "$price", buckets: 2, granularity: "POWERSOF2", output: { "count": { $sum: 1 }, "totalQuantity": { $sum: "$quantity" } } } } ])
Output
Questo comando restituisce il seguente output:
[
{ _id: { min: 4, max: 16 }, count: 3, totalQuantity: 7 },
{ _id: { min: 16, max: 32 }, count: 2, totalQuantity: 2 }
]
Esempi di codice
Per visualizzare un esempio di codice per l'utilizzo del $bucketAuto comando, scegliete la scheda corrispondente alla lingua che desiderate utilizzare: