mongodb 基本查询与高级查询 看这里就够了

本文介绍MongoDB的基本查询方法,包括条件查询、排序、限制和统计等功能,并深入探讨了聚合查询的使用,如$project、$match等管道操作符。

基本查询

基本查询的通用方式 : db.表名.find({},{}).功能

    第一个{}  为条件查询
    第二个{}  为返回的列 {字段名:1}
    功能 : sort(字段:1) | skip(num) | limit(num) | count()
复制代码

条件查询

第一个花括号

查找全部

    db.users.find()
复制代码

精准查找

     db.users.find({"name":"zhangsan"})
复制代码

精准查找

     db.users.find({"name":"zhangsan"})
复制代码

>,>=,<,<= 查找

    大于     :  db.users.find({"name":{$gt:"q"}})
    大于等于 :  db.users.find({"name":{$gte:"q"}})
    小于     :  db.users.find({"name":{$lt:"q"}})
    小于等于 :  db.users.find({"name":{$lte:"q"}})
复制代码

多个条件并且关系 查找

    db.users.find({"name":"zhangsan","age":20})       //不同key
    db.users.find({"age":{$gte:25,$lte:28}})          //相同key
复制代码

多个条件或许关系 查找

    db.users.find({ $or:[{age:24},{age:28}]   })
复制代码

模糊查询

    模糊查询   :  db.article.find({"title":/女装/})
    以什么开头 :  db.users.find({title:/^女装/})
复制代码
第二个花括号

查询指定列

    单列 :  db.users.find({},{name:1})
    多列 :  db.users.find({age:{$gte:25}},{name:1,age:1})
复制代码
功能

排序

    正序 : db.users.find({},{}).sort({age:1})
    倒序 : db.users.find({},{}).sort({age:-1})
复制代码

限制

    查询前五条数据            :  db.users.find({},{}).limit(5)
    跳过两条,查询后面三条数据  :  db.users.find({}).skip(2).limit(3)
    分页方法                  :  分页  skip-1 * limit
复制代码

统计

    db.users.find({ age:{$gte:24} }).count()
复制代码

高级查询 aggregate

Aggregation 管道操作符与表达式

管道操作符Description
$project查询字段进行筛选
$match条件匹配。只满足条件的文档才能进入下一阶段
$limit限制结果的数量
$skip跳过文档的数量
$sort条件排序
$group条件进行分组和统计
$lookup$lookup 操作符 用以引入其它集合的数据(表关联查询)

SQL 和 和 NOSQL 对比

SQLNOSQL
SELECT$project
WHERE$match
GROUP BY$group
HAVING$project
ORDER BY$sort
LIMIT$limit
SUM()$sum
COUNT()$sum
join$lookup

每个管道表达式 看上面官方图,$group中的求和表达式。

常用表达式操作符Description
$addToSet将文档指定字段的值去重
$max文档指定字段的最大值
$min BY文档指定字段的最小值
$sum文档指定字段求和
$multiply文档指定两个字段求乘
$avg BY文档指定字段求平均
$gt大于给定值
$lt()小于给定值
$eq()等于给定值

聚合管道格式

    db.order.aggregate([
      {
        $project:{ trade_no:1, all_price:1 }
      },
      {
        $match:{"all_price":{$gte:90}}
      },
      {
        $limit:1
      },
      {
        $skip:1
      },
      {
        $sort:{"all_price":-1}
      },
      {
        $group :{_id:"$order_id",totalNum:{$sum:"$num"},totalPrice: { $sum: { $multiply: [ "$price", "$num" ] } }  }
      },
      {
        $lookup:
          {
            from: "order_item",
            localField: "order_id",
            foreignField: "order_id",
            as: "items"
          }
      }
    ])
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值