统计
[
{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 架构(四)