MongoDB学习笔记(数据操作)

一、查询
1、查询所有结果
db.user.find({});

2、查询指定列
db.user.find({
"name" : { $regex : /.*K.*/ }
},{
"_id" : 0,
"_class" : 1,
"name" : 1
});

3、使用and
db.user.find({
"name" : { $regex : /.*阿.*/ },
"group.member" : "5555a068b356d74a13dec115"
});
或者
db.user.find({
    "$and" : 
    [{
"parentId" : "55fa3b022dd59b3b21aa6265"
},{
"status" : 1
},{
"_id" : { "$lt" : ObjectId("55fa604a2dd59b3b21aa628b")}
}]
}).sort({
"type" : -1,
"_id" : -1
}).count();

4、使用or
db.user.find({
$or : 
[{
"name" : { $regex : /.*阿.*/ }
},{
"name": { $regex : /.*K.*/ }
}]
});

5、<, <=, >, >= ($lt, $lte, $gt, $gte)
select * from user where age >= 20 and age <= 30;
db.user.find({
"age" : {
'$gte' : 20, 
'$lte' : 30
}
});

6、使用in, not in ($in, $nin)
select * from user where age in (10, 22, 26);
db.user.find({
"age" : {
$in : [ 10, 22, 26 ]
}
});

7、匹配null
select * from user where age is null;
db.user.find({
"age" : null
});

8、like (mongoDB 支持正则表达式)
select * from user where name like "%hurry%";
db.user.find({
name : /hurry/
}); 
select * from user where name like "hurry%";
db.user.find({
name : /^hurry/
});

9、使用distinct
select distinct (name) from user;
db.user.distinct("name");

10、使用count
select count(*) from user;
db.user.count();

11、exists
db.user.find({
"interact.niceNum" : { $exists : true }
});

12、使用limit
db.user.find({}).sort({ createTime : -1 }).limit(5);

13、模糊查询$regex
db.user.find({
"name" : { $regex : /.*K.*/ }
});

14、分页查询
db.user.find({
$and : 
[{
"userId" : "55b7332477a5b5073354d3d6"
}]
}).sort({
"user.word" : -1
}).skip(2).limit(10);

二、修改
1、$pop用法[数组操作]
用途:删除数组内的一个值
用法:
删除最后一个值:{$pop : {field : 1}}
删除第一个值:{$pop : {field : -1}}
注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条。mongodb 1.1及以后的版本才可以用
db.user.update({
"mobile" : "18666177437"
},{
$pop : {"group.member" : -1}
});

2、$set用法
用途:用于更新字段值
用法:{$set : {field : value}},就是相当于sql的set field = value,全部数据类型都支持$set
db.user.update({
"name" : "KTV"
},{
$set : {"count" : 2}
});

3、$inc用法
用途:对数字字段增加value
用法:{$inc : {field : value}},意思对一个数字字段field增加value
db.user.update({
"name" : "KTV"
},{
$inc : {"count" : -3}
});

4、$unset用法
用途:删除字段
用法:{$unset : {field : 1}},顾名思义,就是删除字段
db.user.update({
"name" : "KTV"
},{
$unset : {"isJoin" : 1}
});

5、$push用法[数组操作]
用途:增加数组内值
用法:{$push : {field : value}},把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型进去
db.user.update({
"name" : "KTV"
},{
$push : {"testArray" : "3333"}
});

6、$addToSet用法[数组操作]
用途:增加一个值到数组内,而且只有当这个值不在数组内才增加
用法:{$addToSet : {field : value}}
db.user.update({
"name" : "KTV"
},{
$addToSet : {"testArray" : "5555"}
});

7、$pushAll用法[数组操作]
用途:同$push,只是一次可以追加多个值到一个数组字段内
用法:{$pushAll : {field : value_array}}
db.user.update({
"name" : "KTV"
},{
$pushAll : {"testArray" : ["7777", "8888"]}
});

三、聚合
1、分组
db.sysUsers.group({
##key : { type : 1 },
##或者如下
    keyf : function(user) {
        var date = new Date(user.createTime);
        var dateKey = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
        return { day : dateKey, type : user.type };
    },
    cond : { "status" : 1 , "createTime" : { "$gte" : new Date("2015/09/01") , "$lte" : new Date("2015/09/30")}},
    initial : { count : 0 }, 
    reduce : function Reduce(user, out) {
        out.count += 1;
    }
});

db.sysUsers.aggregate([
{$match: { "status" : 1 , "createTime" : { "$gte" : new Date("2015/09/01") , "$lte" : new Date("2015/09/30")}}},
{$group: {_id: {
year : {$year : "$createTime"},
        month : {$month : "$createTime"},
        day : {$dayOfMonth : "$createTime"}
      }, count:{$sum : 1}}},
{$sort : {"_id.month" : 1}}
]);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值