linux 登录 mongo 192.168.23.128:27017/zwy
//增加
db.person.insert({name:"zzz",sex:"nan",age:"100"});
//循环批量插入
for(var i = 0 ; i < 100; i++) {
db.person.insert({name:"zzz",sex:"nan",age:i});
}
//删除
db.person.remove({name:"zzz",age:18})
//查找
db.person.find({name:"zzz",age:18})
//排序 1 为升序排序,而-1是用于降序排列。
db.person.find().sort({age:-1})
//分页
db.person.find().sort({age:-1}).skip(10).limit(10)
//修改
db.person.findOne({"name":"zzz",age:17})
db.person.update(p,{name:"zwy",age:99})
//批量修改
db.person.update({name:"zzz"},{$set:{age:336}},false,true)
//不存在就插入
db.person.update({age:30},{$set:{age:316}},true)
//group by
/*
* key:grouby 的关键字
* initial :初始化话函数,所有age相同的组别,执行reduce之前要先调用的函数
* reduce:对所有age相同的记录要执行的reduce函数
* finalize:执行完所有的reduce函数之后要调用的函数
* condition:输出的判断条件*/
db.person.group({
key:{age:true},
initial:{"person":[]},
$reduce:function(cur, prev) {
prev.person.push(cur.name);
},
finalize:function(out) {
out.size = out.person.length;
},
condition:{age:{$gt:20}}
})
//MapReduce hadoop的MapReduce操作
// map function
m = function(){
emit( this.age , { count : 1 } );
};
// reduce function
r = function( key , values ){
var total = 0;
for ( var i=0; i<values.length; i++ )
total += values[i].count;
return { count : total };
};
res = db.person.mapReduce(m,r,{out:"list"});
db.list.find()
//查询索引
db.person.getIndexes()
//创建索引 1 为升序排序,而-1是用于降序排列。
db.person.ensureIndex({age:1})
//删除索引
db.person.dropIndex({age:1})
//聚合
/*$sum 计算总和。
$avg 计算平均值
$min 获取集合中所有文档对应值得最小值。
$max 获取集合中所有文档对应值得最大值。
$push 在结果文档中插入值到一个数组中。
$addToSet 在结果文档中插入值到一个数组中,但不创建副本。
$first 根据资源文档的排序获取第一个文档数据。
$last 根据资源文档的排序获取最后一个文档数据
*/
db.person.aggregate([{$group : {_id : "$age" ,num_age : {$sum : 1 }}}])
==>等价于 select by_user, count(*) from mycol group by by_user
db.person.aggregate([{$group : {_id : "$age" ,avg_age : {$sum : "$age" }}}])
==>等价于 select by_user, sum(age) from mycol group by by_user