1.find操作

单一条件:

> db.xxx.find({"key":"value"});

嵌套数组:

> db.xxx.find({"array.key":"value"});

多条件:($and)

> db.xxx.find({
        $and:[
            {"key1":"value1"},
            {"key2":"value2"}
        ]
    });

多条件:($or)

> db.xxx.find({
        $or:[
            {"key1":"value1"},
            {"key2":"value2"}
        ]
    });

$lt:小于

> db.xxx.find({key:{$It:value}});

$lte:小于或等于

> db.xxx.find({key:{$Ite:value}});

$gt:大于

> db.xxx.find({key:{$gt:value}});

$gte:大于或等于

> db.xxx.find({key:{$gte:value}});

$ne:不等于

> db.xxx.find({key:{$ne:value}});

$in:过滤查询指定字段包含指定条件内的文档

> db.xxx.find({key:{$in:[value1,value2,value3....]}});

$nin:过滤查询指定字段不包含指定条件内的文档

> db.xxx.find({key:{$ne:array}});

$all:过滤查询指定字段都包含指定条件内的文档
$springboot 集成mongo 多条件查询 mongo多条件查询语句怎么写_字段all 必须满足[ ]内的所有值

> db.xxx.find({key:{$all:[value1,value2,value3....]}});

$not:查询过滤不满足条件的文档

> db.xxx.find({key:{$not:query}})

$nor:查询过滤都不满足条件的文档

> db.xxx.find($nor:[{query1,query2,...])

$exists: 查询字段key存在或不存在的文档

> db.xxx.find({key:{$exists:boolean}})

.limit():只取满足条件的前num条文档

> db.xxx.find().limit(num)

.skip():只取满足条件的且跳过前num条的文档

> db.xxx.find().skip(num)

.sort():满足条件的的文档且根据key字段正向(反向)排序

> db.xxx.find().sort({key:1(-1)})

$type:查询过滤字段key为类型type的文档

> db.xxx.find({key:{$type:type}})

$size:查询特定长度的数组的文档

> db.xxx.find({favorite_number: {$size: 3}})

$mod:取模操作符,例查询所有key值%4===3的文档

> db.xxx.find({key,{$mod:[4,3]}})

$regex:正则表达式过滤文,例查询所有key值为r开头且不区分大小写的文档

> db.xxx.find({key:,{$regex:/^r/,$options:’i’}})

$elemMatch:查询数组字段key包含满足所有条件的文档

> db.xxx.find({key,{$elemMatch:{query1,query2,...}}})

$slice:查询满足条件的文档且文档内的array字段限制为num条

> db.collectionName.find(query,{array:{$slice:num}})

2.聚合操作 $aggregate

管道的概念
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。

> db.xxx.aggregate([query1,query2,query3......])

$match筛选符合条件的文档

> db.xxx.aggregate([{$match:{key1:value1,key2:value2}])

$unwind:将数组字段key 拆分成多条文档后输出。

> db.xxx.aggregate([{$unwind:"$key1"},{$unwind:"$key2"}])

$projection:查询后输出文档字段是否保留,key值为1显示,为0不显示

> db.xxx.aggregate([{$project:{key1:1,key2:1}}])

springboot 集成mongo 多条件查询 mongo多条件查询语句怎么写_字段_02sum:求和

> db.xxx.aggregate([{$group:{_id:"$key1",count:{$sum:"$key2"}}}])

(2) $min:取最小值

> db.xxx.aggregate([{$group:{_id:"$key1",min:{$min:"$key2"}}}])

(3) $max:取最大值

> db.xxx.aggregate([{$group:{_id:"$key1",min:{$min:"$key2"}}}])

(4) $avg:平均值

> db.xxx.aggregate([{$group:{_id:"$key1",avg:{$avg:"$key2"}}}])

(5) $addToSet:根据key1分组后通过数组add自己想要的字段

> db.xxx.aggregate([{$group:{_id:"$key1",array:{$addToSet:"$key2"}}}])

(6) $first:分组并取key2字段第一个数据

> db.xxx.aggregate([{$group:{_id:"$key1",first:{$first:"$key2"}}}])

(7) $last:分组并取key2字段最后一个数据

> db.xxx.aggregate([{$group:{_id:"$key1",last:{$last:"$key2"}}}])

(8) $push:分组并push key2的数组

> db.xxx.aggregate([{$group:{_id:”$key”,array:{$push:”$key2”}}}])

(9)$set:根据query求值并生成新字段插入文档

> db.xxx.aggregate([{$set:{newKey:query}])

(10)$unset:将字段key从文档中删除

> db.xxx.aggregate([{$unset:key])

(11)$sort:对指定字段进行排序 1为升序,-1为降序

> db.xxx.aggregate([{$sort:{key:1}])

(12)$limit:限制查询文档数

> db.xxx.aggregate({$limit:num})

(13)$count:计算文档数

> db.xxx.aggregate([{$group:{_id:"$key1",count:{$count:"$key2"}}}])

(14).skip():只取满足条件的且跳过前num条的文档

> db.xxx.aggregate({$skip:num})

整合:

db.xxx.aggregate([
        {$unwind:"$key1"},
        {$unwind:"$key2"},
        {"$match":{query1,query2}},
        {"$project":{query1,query2}},
        {"$group":{query1,query2}},
        {"$sort":{key:-1}},
        {"$limit":num},
        {"$skip":num}
 ])

注:
array表示数组:[value1,value2,value3…]
query表示键值对:“key”:“value”