MongoDB 集合可以通過使用聚合管道(aggregation pipeline)和變更流(change streams)來支持實時分析。
聚合管道(Aggregation Pipeline): 聚合管道是 MongoDB 中用于數據處理和分析的強大工具。你可以使用聚合管道對集合中的文檔進行各種操作,如過濾、投影、分組、排序、限制等。這些操作可以在數據寫入時實時執行,從而實現對數據的實時分析。
例如,假設你有一個名為 orders
的集合,其中包含訂單信息。你可以使用聚合管道來計算每個客戶的總訂單金額:
db.orders.aggregate([
{ $group: { _id: "$customerId", totalAmount: { $sum: "$amount" } } },
{ $sort: { totalAmount: -1 } }
]);
變更流(Change Streams): 變更流是 MongoDB 4.0 引入的一項功能,允許你實時監控集合中的數據變更。你可以使用變更流來捕獲插入、更新、刪除等操作,并對這些變更進行實時處理和分析。
例如,你可以使用變更流來監控 orders
集合中的訂單變更,并計算每個客戶的訂單數量:
const changeStream = db.orders.watch();
changeStream.on('change', next => {
if (next.operationType === 'insert') {
// 處理新訂單
} else if (next.operationType === 'update') {
// 處理更新訂單
} else if (next.operationType === 'delete') {
// 處理刪除訂單
}
});
通過結合使用聚合管道和變更流,你可以實現對 MongoDB 集合的實時分析。例如,你可以實時計算客戶的總訂單金額、平均訂單金額、最近訂單等指標,并根據這些指標觸發相應的業務邏輯。