• mongo中常用的增删改查


    db.students.find();
    //按性别分组,并显示每组的姓名
    db.students.aggregate({
    $group:{
      _id:'$sex',
      name:{$push:'$name'}
      }
    })
    //$$ROOT将整个文档放入数组中
    db.students.aggregate({
      $group:{
        _id:'null',
        name:{$push:'$$ROOT'}
      }
    })
    //按照性别分组,求平均年龄
    db.students.aggregate(
      {$group:{_id:'$sex',avg:{$avg:'$age'}}}
    )
    db.city.find()
    //统计出每个country/province下的userid的数量(同一个userid只统计一次)
    db.city.aggregate({
      $group:{
        _id:{country:'$country',province:'$province',userid:'$userid'},
        count:{$sum:1}
       }
    },
    {$group:{
    _id:{province:'$_id.province'},
    count:{$sum:1}
    }})
    //向car集合里插入数据
    db.car.insertMany([
    {carname:'大众',color:'red',price:120},
    {carname:'奔弛',color:'bule',price:400000},
    {carname:'宝马',color:'green',price:300000},
    {carname:'奔弛',color:'red',price:600000},
    {carname:'大众',color:'yellow',price:100},
    {carname:'大众',color:'yellow',price:120}
    ])
    db.car.find()
    //按照carname分类,并将每个分类里的price透视
    db.car.aggregate({
      $group:{_id:'$carname',
        money:{$push:'$price'}}
    })
    //统计出大众车价格有哪些,去重
    db.car.aggregate(
      {$group:{_id:{carname:'$carname',price:'$price'}}},

      {$group:{_id:'$_id.carname',money:{$push:'$_id.price'}}},

      {$match:{_id:'大众'}}
    )

    db.p2p.opinion.find()
    //统计每个作者出现的次数,集合名加方括号引号出现22条数据,按照原来方法不加方括号引号会出现20个数据,可能是集合名称不太规范,不要有点
    db['p2p.opinion'].aggregate({
      $group:{
        _id:'$author',
      count:{$sum:1}
      }
    })
    //1.取出前10条,
    db.p2p.opinion.aggregate(
      {$limit:10})
    //2.过滤出souce=金评媒,并且tags=平台跑路的
    db.p2p.opinion.aggregate(
      {$match:{source:'金评媒',tags:{$regex:'.*平台跑路.*'}}}
    )
    //1.过滤出所有cmt_cnt>=0的,并且title不为空的数据
    db.p2p.aggregate(
      {$match:{cmt_cnt:{$gte:'0'},title:{$ne:''}}},
      {$project:{cmt_cnt:1,title:1}}
    )
    //1.根据所有"author"分组,取出所有title
    db.p2p.aggregate(
      {$group:{_id:'$author',money:{$push:'$title'}}}
    )
    //2.跳过十条取出十条数据,根据$$ROOT找到每条信息的title,author,和itme_pud_time(只显示这三项)
    db.p2p.aggregate(
      {$skip:10},
      {$limit:10},
      {$project:{title:1,author:1,item_pub_time:1,_id:0}}
    )
    //3.过滤出所有cmt_cnt为0的数据,找到所有title,并且找到item_pud_time时间
    db.p2p.aggregate(
      {$match:{cmt_cnt:'0'}},
      {$project:{title:1,item_pub_time:1,_id:0}}
    )
    //4.找到所有url为空的信息,将空的url加上https://www.baidu.com
    db.p2p.update({url:''},{$set:{url:'https://www.baidu.com'}},{multi:true})
    db.p2p.find({url:'https://www.baidu.com'}).count()
    //不操作数据库,用管道只在显示的位置换上新的url
    db.p2p.aggregate(
      {$match:{url:''}},
      {$project:{url:'https://www.baidu.com',title:1}}
    )
    //5.找到所有cmt_cnt为0并且source为金评媒的信息,利用porject只显示title,content
    db.p2p.aggregate(
      {$match:{cmt_cnt:'0',source:'金评媒'}},
      {$project:{title:1,content:1,_id:0}}
    )
    //6.根据source分组,输出属于p2p理财的新闻有多少记录
    db.p2p.aggregate(
    {$group:{_id:'$source',count:{$sum:1}}},
    {$match:{_id:'P2P理财'}}
    )
    //7.过滤出item_pud_time 2015-12-15之后的信息,输出平台跑路的平台名称
    db.p2p.aggregate(
    {$match:{item_pub_time:{$gt:'2015-12-15'},tags:{$regex:'平台跑路'}}}
    )
    //8.根据source分组,找到平台跑路的有多少个
    db.p2p.aggregate(
      {$match:{tags:{$regex:'平台跑路'}}},
      {$group:{_id:{source:'$source',tags:'$tags'},count:{$sum:1}}}
    //{$match:{_id.tags:{$regex:'平台跑路'}}} 错的
    )
    //9.过滤出所有p2p理财和金评媒的新闻根据id进行降序排列,找到前3条信息的title
    db.p2p.aggregate(
      {$match:{$or:[{source:{$regex:'金评媒'}},{source:{$regex:'P2P理财'}}]}},
      {$sort:{_id:-1}},
      {$limit:3}
    )

  • 相关阅读:
    POJ
    UPC-5843: 摘樱桃(最优状态递推)
    BZOJ-1088 [SCOI2005]扫雷Mine(递推+思维)
    HDU-3065 病毒侵袭持续中(AC自动机)
    BZOJ-4236 JOIOJI (map查找+思维)
    HDU-2896 病毒侵袭(AC自动机)
    Hrbust-2060 截取方案数(KMP)
    UVALive 4490 压缩DP
    UVALive 5881
    UVALive 4168
  • 原文地址:https://www.cnblogs.com/lutt/p/10731662.html
Copyright © 2020-2023  润新知