MongoDB 高级用法
2015-09-22 09:54
501 查看
MongoDB高级用法
1.聚合 aggregate
适用场景:统计数据
方法:db.collection.aggrate([array]);
操作符:
$project:包含、排除、重命名以及显示字段
$match:查询
$limit:限制结果数量
$skip:跳过结果数量
$sort:排序
$group:分组
$unwind:分割嵌入数组到自己的顶层文件
实例:
java封装类:
示例数据:
1 {_id:1,name:"a",status:1,num:1}
2 {_id:2,name:"a",status:0,num:2}
3 {_id:3,name:"b",status:1,num:3}
4 {_id:4,name:"c",status:1,num:4}
5 {_id:5,name:"d",status:1,num:5}
示例一:$project 获取部分数据,类似select arg1,arg2 from table
实例二:$match 匹配查询条件
二、group
方法:
参数:
示例:
3.索引
好处:加速查询
创建索引:db.test.ensureIndex({"username":1})
查看是否建立索引:db.test.getIndexes()
删除索引:db.test.dropIndex({"username":1})
查看查询全部信息:db.test.find().explain()
4.其他查询
$where
1.聚合 aggregate
适用场景:统计数据
方法:db.collection.aggrate([array]);
操作符:
$project:包含、排除、重命名以及显示字段
$match:查询
$limit:限制结果数量
$skip:跳过结果数量
$sort:排序
$group:分组
$unwind:分割嵌入数组到自己的顶层文件
实例:
java封装类:
protected AggregationOutput aggregate(DB db,String name,DBObject firstOp, DBObject ... additionalOps) throws Exception { return db.getCollection(name).aggregate(firstOp, additionalOps); }
示例数据:
1 {_id:1,name:"a",status:1,num:1}
2 {_id:2,name:"a",status:0,num:2}
3 {_id:3,name:"b",status:1,num:3}
4 {_id:4,name:"c",status:1,num:4}
5 {_id:5,name:"d",status:1,num:5}
示例一:$project 获取部分数据,类似select arg1,arg2 from table
DBobject projectQuery=new BasicDBObject("$project",new BasicDBObject("_id",1) .append("name",1)); List<DBObject> dboList = (List<DBObject>)aggregate(db, user,projectQuery);
实例二:$match 匹配查询条件
DBobject matchQuery=new BasicDBObject("$match",new BasicDBObject("name","a")); List<DBObject> dboList = (List<DBObject>)aggregate(db, user,matchQuery);实例三:$group 分组
DBobject groupQuery=new BasicDBObject("$group",new BasicDBObject("_id","$name").append("count",new BasicDBObject("$sum",1)).append("total",new BasicDBObject("$sum","$num"))); List<DBObject> dboList = (List<DBObject>)aggregate(db, user,matchQuery);
二、group
方法:
public DBObject group(DBObject key, DBObject cond, DBObject initial, String reduce, String finalize) throws MongoException
参数:
key - - { a : true } cond - - optional condition on query reduce - javascript reduce function initial - initial value for first match on a key finalize - An optional function that can operate on the result(s) of the reduce function.
示例:
final List<String> targetTerms = Arrays.asList("dogs", "cats"); final Datastore ds = …. final DBCollection coll = ds.getCollection(Example.class); BasicDBObject key = new BasicDBObject("_id", true); BasicDBObject cond = new BasicDBObject(); cond.append("indices", new BasicDBObject("$in", targetTerms)); BasicDBObject initial = new BasicDBObject(); initial.append("score", 0); initial.append("targetTerms", targetTerms); String reduce = "function (obj, prev) { " + " for (i in prev.targetTerms) {" + " targetTerm = prev.targetTerms[i];"+ " for (j in obj.indices) {" + " var index = obj.indices[j];"+ " if (targetTerm === index) prev.score++;" + " }" + " }" + "}"; String fn = null; final BasicDBList group = (BasicDBList) coll.group(key, cond, initial, reduce, fn);
3.索引
好处:加速查询
创建索引:db.test.ensureIndex({"username":1})
查看是否建立索引:db.test.getIndexes()
删除索引:db.test.dropIndex({"username":1})
查看查询全部信息:db.test.find().explain()
4.其他查询
$where
相关文章推荐
- mongodb执行js脚本
- mongodb 执行js脚本
- vc2010下mongodb驱动的编译与环境搭建
- MongoDB(索引)
- 启动设置mongodb
- MongoDB CRUD操作
- MongoDB 的安装和使用
- MongoDB 基础操作
- MySQL vs ElasticSearch vs MongoDB
- MongoDB学习5_Elasticsearch、MongoDB和Hadoop比较
- mongoDB安装学习
- mongoDB 3.0 安全权限访问控制
- MongoDB-Map&Reduce
- mongodb系列-conf配置文件
- node.js + express(ejs) + mongodb(mongoose) 增删改实例
- MongoDB在Java当中的稍复杂用法(内嵌Document或者Array的CRUD)
- 单机mongoDB集群
- mongodb 创建用户
- Meteor - 基于Node.js和MongoDB的全栈开发框架
- mongodb的常用 操作