一、find
db.tianyc02.find({age:{$lt:100}})
db.tianyc02.find({age:{$lt:100,$gt:20}})
db.tianyc02.find({age:{$ne:11}})
db.tianyc02.find({age:{$in:[11,22]}})
db.tianyc02.find({age:{$nin:[11,22]}})
db.tianyc02.find({$or:[{age:11},{age:22}]})
db.tianyc02.find({$or:[{age:11},{name:'xttt'}]})
db.tianyc02.find({age:{$mod:[11,0]}})age对11取模等于0
db.tianyc02.find({age:{$not:{$mod:[11,0]}}})
db.res_comment.find({"comm_data":{$regex:"[[0-9]{4,5}|[0-9]{2}]"}})匹配[9999|01]或者[10001|11]
二、update
1、db.collection.update( criteria, objNew, upsert, multi )
criteria相当于where条件;
objNew相当于set;
upsert当不存在要更新的记录,是否插入一条记录,默认为false;
multi是否更新全部符合条件的记录,默认为false。
2、objNew中常用的操作符:
$inc:{$inc: {field: value}},将field字段增加value值,如果field字段不存在,则增加field字段。
$set:{$set: {field: value}},将field字段设置为value值,如果field字段不存在,则增加field字段
$unset:{$unset: {field: 1}},将field字段删除。
$push:{$push: {field: value}},field必须是数组,将value追加到数组中,field不存在,则新建一个field字段的数组。
$pull:{$pull: {field: value}},从数组field内删除一个等于value的值。
三、db.collection.aggregate(pipeline, options);
1、pipeline数组类型,options数组类型
2、pipeline可选参数:
$project 选择的字段名
$match 放在group前相当于where使用,放在group后面相当于having使用
$sort 排序1升-1降 sort一般放在group后,也就是说得到结果后再排序,如果先排序再分组没什么意义;
$limit 相当于limit m,不能设置偏移量
$skip 跳过第几个文档
$group: { _id: <expression>, <field1>: { <accumulator1> : <expression1> }, ... 按什么字段分组,注意所有字段名前面都要加$,否则mongodb就为以为不加$的是普通常量,其中accumulator又包括以下几个操作符# $sum,$avg,$first,$last,$max,$min,$push,$addToSet#如果group by null就是 count(*)的效果
3、例子:
查找发了评论内容是Tesing的所有用户
db.comment.aggregate([
{$match:{"comm_data":"Testing"}},
{$group:{_id:"$comm_from_uid"}}
])
查找当前发布评论数最多的10个用户
db.comment.aggregate([
{$group:{_id:"$comm_from_uid", count:{$sum:1}}},
{$sort:{count:-1}},
{$limit:10}
])