在Linux(如Ubuntu/Debian)上安装MongoDB是基础步骤。以Ubuntu为例,可通过以下命令完成安装:
# 添加MongoDB官方APT源
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 68818C72E52529D4
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# 更新包列表并安装MongoDB
sudo apt update
sudo apt install -y mongodb-org
# 启动MongoDB服务并设置开机自启
sudo systemctl start mongod
sudo systemctl enable mongod
# 验证安装状态
sudo systemctl status mongod # 应显示"active (running)"
通过mongo --eval 'db.runCommand({ connectionStatus: 1 })'命令可进一步验证连接状态。
大数据分析的前提是将数据高效导入MongoDB。常用工具为mongoimport,支持JSON、CSV等格式:
# 导入JSON格式数据(示例:从data.json导入到mydatabase数据库的mycollection集合)
mongoimport --db mydatabase --collection mycollection --file data.json --jsonArray
# 导入CSV格式数据(需指定字段)
mongoimport --db mydatabase --collection mycollection --type csv --headerline --file data.csv
对于超大规模数据(如亿级记录),建议分批次导入或使用--numInsertionWorkers参数提升并发性能。
MongoDB的聚合框架是大数据分析的核心工具,支持数据分组、过滤、排序、聚合等操作。以下是常见场景示例:
field字段分组,计算数量并降序排列):db.mycollection.aggregate([
{ $group: { _id: "$field", count: { $sum: 1 } } },
{ $sort: { count: -1 } },
{ $limit: 10 } // 取Top10结果
]);
db.users.aggregate([
{ $project: { date: { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } } } },
{ $group: { _id: "$date", newUserCount: { $sum: 1 } } },
{ $sort: { _id: 1 } } // 按日期升序排列
]);
db.mycollection.createIndex({ field: 1 }));$match在聚合管道前端过滤数据;explain()分析查询性能(如db.mycollection.aggregate([...]).explain("executionStats"))。通过pymongo库连接MongoDB,结合Pandas进行更复杂的数据处理:
from pymongo import MongoClient
import pandas as pd
# 连接MongoDB
client = MongoClient('localhost', 27017)
db = client['mydatabase']
collection = db['mycollection']
# 查询数据并转为Pandas DataFrame
data = list(collection.find({}, {'field1': 1, 'field2': 1, '_id': 0}))
df = pd.DataFrame(data)
# 使用Pandas分析(如计算字段均值)
mean_value = df['field1'].mean()
print(f"Field1 Mean: {mean_value}")
这种方法适合需要深度数据分析(如机器学习、统计建模)的场景。
insertMany()代替单条insertOne(),bulkWrite()进行批量更新/删除,减少网络开销;wiredTiger缓存大小(如storage.wiredTiger.engineConfig.cacheSizeGB),确保热点数据存入内存;通过以上流程,Linux环境下可充分利用MongoDB的高性能、灵活数据模型及丰富工具链,实现从数据存储到分析的全链路处理,满足大数据场景的需求。