Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Potok agregacji to zaawansowane narzędzie, które umożliwia deweloperom przeprowadzanie zaawansowanej analizy danych i manipulowania ich kolekcjami. Potok jest sekwencją operacji przetwarzania danych, które są wykonywane na dokumentach wejściowych w celu wygenerowania obliczonych danych wyjściowych. Etapy potoku przetwarzają dokumenty wejściowe i przekazują wynik do następnego etapu. Każdy etap wykonuje określoną operację na danych, takich jak filtrowanie, grupowanie, sortowanie i przekształcanie.
Podstawowa składnia
Podstawowa składnia potoku agregacji jest następująca:
db.collection.aggregate([ { stage1 }, { stage2 }, ... { stageN }])
Gdzie db.collection to kolekcja MongoDB, na której chcesz wykonać agregację, a etapy stage1, stage2, ..., stageN to etapy potoku, które chcesz zastosować.
Przykładowe etapy
Usługa Cosmos DB dla bazy danych MongoDB udostępnia szeroką gamę etapów, których można używać w potoku, w tym:
- $match: filtruje dokumenty, aby przekazywać tylko dokumenty zgodne z określonym warunkiem.
- $project: przekształca dokumenty w nowy formularz, dodając, usuwając lub aktualizując pola.
- $group: grupuje dokumenty według co najmniej jednego pola i wykonuje różne funkcje agregujące na pogrupowanych danych.
- $sort: sortuje dokumenty na podstawie określonych pól.
- $skip: pomija określoną liczbę dokumentów.
- $limit: ogranicza liczbę dokumentów przekazanych do następnego etapu.
- $unwind: Dekonstrukuje pole tablicy z dokumentów wejściowych w celu wyprowadzenia dokumentu dla każdego elementu.
Aby wyświetlić wszystkie dostępne etapy, zobacz obsługiwane funkcje
Przykłady
Poniżej przedstawiono kilka przykładów użycia potoku agregacji do wykonywania różnych operacji na danych:
Filtrowanie: aby filtrować dokumenty, które mają pole "quantity" większe niż 20, możesz użyć następującego potoku:
db.collection.aggregate([
{ $match: { quantity: { $gt: 20 } } }
])
Grupowanie: aby pogrupować dokumenty według pola "kategoria" i obliczyć łączną "ilość" dla każdej grupy, możesz użyć następującego potoku:
db.collection.aggregate([
{ $group: { _id: "$category", totalQuantity: { $sum: "$quantity" } } }
])
Sortowanie: aby posortować dokumenty według pola "price" w kolejności malejącej, możesz użyć następującego potoku:
db.collection.aggregate([
{ $sort: { price: -1 } }
])
Przekształcanie: Aby dodać nowe pole "rabat" do dokumentów o wartości "price" większej niż 100, możesz użyć następującego potoku:
db.collection.aggregate([
{ $project: { item: 1, price: 1, discount: { $cond: [{ $gt: ["$price", 100] }, 10, 0 ] } } }
])
Odwijanie: aby oddzielić wszystkie dokumenty podrzędne od pola tablicy "tags" i utworzyć nowy dokument dla każdej wartości, możesz użyć następującego potoku:
db.collection.aggregate([
{ $unwind: "$tags" }
])
Przykład z wieloma etapami
db.sales.aggregate([
{ $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } },
{ $group: { _id: "$category", totalSales: { $sum: "$sales" } } },
{ $sort: { totalSales: -1 } },
{ $limit: 5 }
])
W tym przykładzie używamy przykładowej kolekcji o nazwie "sales", która zawiera dokumenty z następującymi polami: "date", "category" i "sales".
Pierwszy etap { $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } filtruje dokumenty według pola "date", przekazując dokumenty tylko z datą od 1 stycznia 2021 r. do 28 lutego 2021 r. Używamy formatu daty ciągu z formatem "RRRR-MM-DD".
Drugi etap { $group: { _id: "$category", totalSales: { $sum: "$sales" } } } grupuje dokumenty według pola "category" i oblicza łączną sprzedaż dla każdej grupy.
Trzeci etap { $sort: { totalSales: -1 } } sortuje dokumenty według pola "totalSales" w kolejności malejącej.
Czwarty etap { $limit: 5 } ogranicza liczbę dokumentów przekazanych do następnego etapu tylko do pierwszej 5.
W związku z tym potok zwróci 5 pierwszych kategorii według łącznej sprzedaży dla określonego zakresu dat.
Następne kroki
- Dowiedz się, jak używać programu Studio 3T z usługą Azure Cosmos DB dla bazy danych MongoDB.
- Dowiedz się, jak używać narzędzia Robo 3T z usługą Azure Cosmos DB dla bazy danych MongoDB.
- Zapoznaj się z przykładami bazy danych MongoDB za pomocą usługi Azure Cosmos DB dla bazy danych MongoDB.
- Próbujesz zaplanować pojemność migracji do usługi Azure Cosmos DB? Informacje o istniejącym klastrze bazy danych można użyć do planowania pojemności.
- Jeśli wiesz już, ile rdzeni wirtualnych i serwerów znajduje się w istniejącym klastrze bazy danych, przeczytaj o szacowaniu jednostek żądań przy użyciu rdzeni wirtualnych lub procesorów wirtualnych.
- Jeśli znasz typowe stawki żądań dla bieżącego obciążenia bazy danych, przeczytaj o szacowaniu jednostek żądań przy użyciu planisty pojemności usługi Azure Cosmos DB.