A B
1 [3000,5000,7500,10000,15000] /Sales分段区间
2 =mongo_open("mongodb://127.0.0.1:27017/raqdb")
3 =mongo_shell(A2,"sales.find()").fetch()
4 =A3.groups(A1.pseg(~.SALES):Segment;count(1): number) /根据 SALES 区间分组统计员工数
5 >A2.close()
分类分组
A B
1 =mongo_open("mongodb://127.0.0.1:27017/raqdb")
2 =mongo_shell(A1,"books.find()")
3 =A2.groups(addr,book;count(book): Count) /分组计数
4 =A3.groups(addr;sum(Count):Total) /分组统计
5 =A3.join(addr,A4:addr,Total) /关联计算
6 >A1.close()
数据写入
导出成CSV:
A B
1 =mongo_open("mongodb://localhost:27017/raqdb")
2 =mongo_shell(A1,"carInfo.find(,{_id:0})")
3 =A2.conj((t=~,cars.car.new(t.id:id, t.cars.name, ~:car))) /对car字段进行拆分成行
4 =file("D:\\data.csv").export@tc(A3) /导出生成csv文件
5 >A1.close()
更新数据库(MongoDB到MySQL):
A B
1 =mongo_open("mongodb://localhost:27017/raqdb") /连接MongDB
2 =mongo_shell(A1,"course.find(,{_id:0})").fetch()
3 =connect("myDB1") /连接mysql
4 =A3.query@x("select * from course2").keys(Sno, Cno)
5 >A3.update(A2:A4, course2, Sno, Cno, Grade; Sno,Cno) /向mysql更新数据
6 >A1.close()
更新数据库(MySQL到MongoDB):
A B
1 =connect("mysql") /连接mysql
2 =A1.query@x("select * from course2") /获取表course2数据
3 =mongo_open("mongodb://localhost:27017/raqdb") /连接MongDB
4 =mongo_insert(A3, "course",A2) /将MySQL表course2导入MongoDB集合course
5 >A3.close()
混合计算
借助SPL还很容易实现MongoDB与其他数据源进行混合计算:
A B
1 =mongo_open("mongodb://localhost:27017/test") /连接MongDB
2 =mongo_shell(A1,"emp.find({'$and':[{'Birthday':{'$gte':'"+string(begin)+"'}},{'Birthday':{'$lte':'"+string(end)+"'}}]},{_id:0})").fetch() /查询某时间段的记录
3 =A1.close() /关闭MongoDB
4 =myDB1.query("select * from cities") /获取mysql中表cities数据
5 =A2.switch(CityID,A4: CityID) /外键关联
6 =A5.new(EID,Dept,CityID.CityName:CityName,Name,Gender) /创建结果集
7 return A6 /返回
SQL支持
SPL除了原生语法,还提供了相当于SQL92标准的SQL支持,可以使用SQL查询MongoDB了,比如前面的关联计算:
A
1 =mongo_open("mongodb://127.0.0.1:27017/test")
2 =mongo_shell(A1,"c1.find()").fetch()
3 =mongo_shell@x(A1,"c2.find()").fetch()
4 $select s.* from {A2} as s left join {A3} as r on s.user1=r.user1 and s.user2=r.user2 where r.income>0.3
应用集成
不仅如此,SPL提供了标准JDBC/ODBC等应用程序接口,集成调用很方便。如JDBC的使用: