MongoDB之简单数据的统计与索引(三)
2019-04-09 09:11
309 查看
统计
[ {name:"张三",sex:true,class:"软开1班",age:28,salary:18000}, {name:"李四",sex:true,class:"软开2班",age:25,salary:15000}, {name:"王五",sex:false,class:"软开1班",age:35,salary:10000}, {name:"赵六",sex:true,class:"软开2班",age:20,salary:15000} ]
Aggregate
db.t_student.aggregate([ {$match:{}}, {$group:{ _id: "$class", totalSalary: { $sum: "$salary" }, avgSalary: { $avg: "$salary" }, users:{$push:"$name"} } }, {$sort:{totalSalary:1}}, {$skip:0}, {$limit:2}, {$match:{avgSalary:{$gt:14000}}}, {$project:{users:false}} ])
MapReduce
db.t_student.mapReduce(function(){ emit(this.class,this) },function(key,values){ var users=[]; var totalSalary=0.0; var count=values.length; values.forEach(function(item,i){ totalSalary+=item.salary; users.push(item.name) }); var results={}; results["totalSalary"]=totalSalary; results["avgSalary"]=totalSalary/count; results["users"]=users; return results; },{ query:{}, out:"t_student_count" });
索引
单Filed索引
> db.集合.createIndex({field:1},{name:"索引名"}) > db.集合.getIndexes() #获取索引 > db.集合.dropIndex("索引名") #删除索引 > db.集合.reIndex() #重建索引
复合索引
db.集合.createIndex({field1:1,field2:-1},{name:"索引名"})
唯一索引
> db.集合.createIndex({field:1},{name:"索引名",unique:true})
稀疏索引
> db.集合.createIndex({name:1},{name:"name_index",unique:true,sparse:true})
不会对 null值 建立索引
局部索引
> db.集合.createIndex({name:1},{name:"name_index",unique:true,partialFilterExpression:{过滤条件}}) 案例 > db.t_user.createIndex({name:1}, {name:"name_index",unique:true,partialFilterExpression:{age:{ $gt: 18} }})
TTL time to live
db.集合.createIndex( { "field": 1 }, { expireAfterSeconds: 3600 } )
GridFS
- The
mongofiles
command-line tool.
[root@centos ~]# mongofiles --host centos --port 27017 -d zpark put /root/jdk-8u171-linux-x64.rpm [root@centos ~]# mongofiles --host centos --port 27017 -d zpark list /root/jdk-8u171-linux-x64.rpm 175262413 [root@centos ~]# mongofiles --host centos --port 27017 -d zpark get /root/jdk-8u171-linux-x64.rpm [root@centos ~]# mongofiles --host centos --port 27017 -d zpark get_id 'ObjectId("5bbf056ccdc8724bd9dbbf6f")' [root@centos ~]# mongofiles --host centos --port 27017 -d zpark delete /root/jdk-8u171-linux-x64.rpm [root@centos ~]# mongofiles --host centos --port 27017 -d zpark delete_id 'ObjectId("5bbf056ccdc8724bd9dbbf6f")' [root@centos ~]# mongofiles --host centos --port 27017 -d zpark search install #搜索 [root@centos ~]# mongofiles --host centos --port 27017 -d zpark list /root/install #前缀搜索
- A MongoDB driver.
MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://192.168.128.128:27017")); //上传 MongoDatabase database = mongoClient.getDatabase("zpark"); GridFSBucket gridFSBucket = GridFSBuckets.create(database,"myfs"); InputStream streamToUploadFrom = new FileInputStream(ne w File("C:\\Users\\Administrator\\Desktop\\考试题-网络编程.pdf")); // Create some custom options GridFSUploadOptions options = new GridFSUploadOptions() .chunkSizeBytes(358400) .metadata(new Document("user", "wangxiaowu")); ObjectId fileId = gridFSBucket.uploadFromStream("考试题-网络编程.pdf", streamToUploadFrom, options); //下载 FileOutputStream streamToDownloadTo = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\考试题-网络编程1.pdf"); gridFSBucket.downloadToStream(new ObjectId("5bbf1238d60f13103082088b"), streamToDownloadTo); streamToDownloadTo.close(); //删除 gridFSBucket.delete(new ObjectId("5bbf1238d60f13103082088b"));
- MongoDB Driver的基本使用。
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.6.4</version> </dependency>
参考:http://mongodb.github.io/mongo-java-driver/3.6/driver/getting-started/quick-start/
上一篇:MongoDB之数据库与集合常规操作(二)
下一篇:MongoDB 架构(四)
相关文章推荐
- Spring Data MongoDB 使用group和unwind实现对数组数据进行简单统计
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- mongodb单机1亿数据索引测试
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组 (转)
- php7中使用mongoDB的聚合操作对数据进行分组求和统计操作
- Mysql分段统计简单数据信息例如年龄,省份,性别等等
- 高性能可扩展mysql(执行计划,索引分析优化改写,删除重复数据,区间统计,满查询日志)
- [转]简单统计SQLSERVER用户数据表大小
- 如何在Mongodb集合中统计去重之后的数据
- 实战:mysql统计指定架构的所有表的数据和索引大小情况
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
- Elasticsearch中的document数据格式,简单的集群管理,商品的索引的CRUD操作(学习资料记录)
- 转移sqlServer数据库数据到mongodb的简单实现
- MongoDB数据量较大时如何构建索引--减少业务最少影响
- 对数据表简单的汇总统计
- 一个简单的数据增量更新策略(Android / MongoDB / Django)
- MongoDB数据导出、导入及索引建立
- 用 python实现简单EXCEL数据统计
- 网站用户行为数据统计与分析之九:elasticsearch与mongodb集成