Notatka
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.
Ważna
Czy chcesz przeprowadzić migrację istniejącej aplikacji bazy danych MongoDB lub używać funkcji języka zapytań MongoDB (MQL)? Rozważ użycie usługi Azure DocumentDB.
Szukasz rozwiązania bazy danych dla scenariuszy o dużej skali z umową SLA gwarantującą poziom dostępności na poziomie 99,999%, natychmiastowym skalowaniem automatycznym i automatycznym przełączaniem awaryjnym między wieloma regionami? Rozważmy usługę Azure Cosmos DB dla noSQL.
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 potok przetwarzania 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 wygląda następująco:
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
Examples
Oto kilka przykładów, jak można użyć potoku agregacji do przeprowadzania różnych operacji na danych:
Filtrowanie: Aby przefiltrować dokumenty, które mają pole "quantity" większe niż 20, możesz użyć następującej sekwencji.
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 przepływu:
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 ciągu daty "YYYY-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 pipeline zwróci pierwsze 5 kategorii na podstawie łącznej sprzedaży w określonym zakresie 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ć zasoby na potrzeby 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.