注意:文中的所有 collection 代表 mongo 表名称
常用条件操作符:$gt(>)、$lt(<)、$gte(>=)、$lte(<=)、$ne(!=)、$eq(=)、$add(+)、$subtract(-)、$multiply(*)、$divide(/)
1、基础条件查询
db.collection.find({“type” : “test”);
2、区间查询
db.collection.find({"type":"test","addTime":{$lte:ISODate("2019-06-11T59:59:00.492+08:00"),$gte:ISODate("2019-06-12T00:00:00.492+08:00")}});
3、数组列表in查询
db.collection.find({“type”:“test”,“ids”:{$in: [1,2,3]}});
4、分页排序查询,倒序(-1),正序(1)
db.collection.find({“type”:“test”}).sort({“addTime”:-1}).skip(0).limit(2);
5、分组查询,统计type类型的age总和
db.collection.aggregate([{$group:{_id:"$type",total:{$sum:"$age"}}}]);
6、带条件的分组查询,统计name非空,type类型的age总和,这里必须使用$group
db.collection.aggregate([{$match:{"name":{$ne:null}}},{$group:{_id:"$type",total:{$sum:"$age"}}}]);
7、带条件的分组查询,统计type类型是test,remark不是手动生成任务的重复订单号数量大于1的列表,这里必须使用$group
db.collection.aggregate([{$match:{"type" : "test","remark" : {$ne:"手动生成任务"}}},{$group:{_id:"$orderNo",total:{$sum:1}}},{ $match: { total: { $gt : 1}}}]);
8、使用aggregate聚合计算查询,查询type类型是test的(age1 / age2)表达式的值,这里必须使用$project
db.collection.aggregate([{$match:{"type" : "test"}},{$project:{_id:"$id",sub:{{ $divide: [ "$age1", "$age2" ]}}}}]);
9、使用aggregate聚合计算查询,查询type类型是test的((age1 + age2) * (year1 - year2))表达式的值,这里必须使用$project
db.collection.aggregate([{$match:{"type" : "test"}},{$project:{_id:"$id",total:{$multiply:[{ $add: [ "$age1", "$age2" ]},{ $subtract: [ "$year1", "$year2" ]}]}}}]);
1、更新字段,其中属性1是条件,2是更新field,3是如果记录不存在,是否插入记录,默认是false,4是是否更新查找到的全部记录,默认是false(只更新找到的第一条数据)
db.collection.update({"_id": ObjectId('123456')},{$set:{"type":"test"}},false,true);
2、增加索引,倒序(-1),正序(1)
db.collection.ensureIndex({type:1})
1、整个表删除
db.collection.drop()
2、删除某些条件的数据,删除type类型是test的数据
db.collection.remove({"type" : "test"})