zoukankan      html  css  js  c++  java
  • mongodb--知识点

     文档型数据库,数据接口BSON,最像关系型数据库的非关系型数据库

    一、sql数据库与nosql数据库区别

    数据类型

    应用场景:社交、游戏、物流、物联网、视频直播

    数据量大    tb  pb

    写入操作频繁

    价值比较低,对事物性要求不高

    不适合复杂join

    适合水平扩展

    优点:

    1、高性能

    2、高可用

    3、高扩展

    4、丰富的查询

    二、nosql数据库分类

    1、键值数据库

    2、列存储数据库

    3、文档型数据库

    4、图形数据库

    三、启动

    配置环境变量

    启动服务

    mongod  --dbpath D:MongoDB

    客户端链接服务端

    mongo ip:27017

    mongo admin -u 用户名 -p 密码

    mongo 127.0.0.1:27017/test -u user -p 123456

    show dbs   查看有哪些数据库

    show collections  查看数据库中的表

    use admin

    show users    查看有哪些用户

    查询表数据

    db.user.find()

    and

    db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"})

    db.user.find({"age":{$lte:30,$gte:20}})

    or

    db.user.find({$or:[{"age":20},{"age":10}]})

    模糊查询

    db.user.find({name:/张/})

    以张开头的

    db.user.find({name:/^张/})

    指定列查询   只查询name 列

    db.user.find({},{name:1})

    排序

    升序

    db.user.find({}).sort({"age":1})

    降序

    db.user.find({}).sort({"age":-1})

    分页查询5条数据

    db.user.find({}).limit(5)

    查询从第几条到第几条

    从第3条开始查询5条

    db.user.find().skip(2).limit(5)

    db.user.find().skip(0).limit(5)

    查询条数

    db.user.find().count()

    更新表数据

    db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})

    不加条件  改第一条

    db.user.update({},{$set:{'age':5}})

    不加set   替换

    db.col.update({'title':'MongoDB 教程'},{'title':'MongoDB'})

    删除表   集合

    db.user.drop()

    删除数据库

    db.dropDatabase()

    删除数据   删除年龄等于30的数据

    db.user.remove({"age",30})

    查询集合的索引

    db.user.getIndexes()

    删除索引

    db.user.dropIndex({"name":1})

    查看查询语句的执行

    db.user.find().explain("executionStats")

    设置索引     给name列设置索引

    db.user.ensureIndex({"name":1})

    设置复合索引     name索引按升序存储,age索引按降序存储

    db.user.ensureIndex({"name":1,"age":-1})

    唯一索引      值必须唯一   类似主键

    db.user.ensureIndex({"userid":1},{"unique":true})

    四、mongo权限

    可以给每一个库设置管理员

    创建超级管理员

    1、use admin

    2、 

    db.createUser({

    user:'admin',

    pwd:'123456',

    roles:[{role:'root',db:'admin'}]

    })

    db  是指哪个库

    3、修改配置文件

    bin/mongod.cfg

    security:

    authorization:enabled

    //查看当前库下的用户

    show users

    删除用户

    db.dropUser("aaa")

    修改用户密码

    db.updateUser("admin",{pwd:"1212"})

    密码认证

    db.auth("admin","password")

    五、数据库表与表的关系

    1、一对一的关系

    2、一对多的关系

    3、多对多的关系

    六、聚合管道:对集合中的文档进行变换和组合

    表达式描述实例
    $sum 计算总和。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
    $avg 计算平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
    $min 获取集合中所有文档对应值得最小值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
    $max 获取集合中所有文档对应值得最大值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
    $push 在结果文档中插入值到一个数组中。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
    $addToSet 在结果文档中插入值到一个数组中,但不创建副本。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
    $first 根据资源文档的排序获取第一个文档数据。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
    $last 根据资源文档的排序获取最后一个文档数据 db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

    只查询trade_no,all_price列   并且条件为all_price>=90的数据

    db.user.aggregate([

        {

          $project:{trade_no:1,all_price:1}

         },

         {

          $math:{"all_price":{$gte:90}}

          },

          {

          $sort:{"all_price":-1}

          },

          {

          $limit:1

          }

    ])

    分组

    db.user.aggregate([

        {

          $group:{_id:"$order_id",total:{$sum:"$price"}}

         }

       

    ])

    _id   total

    1     9

    表关联

    db.order.aggregate([

       {

        $lookup:

               {

                 from:"order_item",

                 localField:"order_id",

                 foreignField:"order_id",

                 as:"items"

               }

        }

    ])

    七、数据库的导入导出

    导出

    mongodump -h dbhost -d dbname -o dbdirectory

    mongodump -h 127.0.0.1:21070 -d test -o c:/path

    导入:

    monorestore -h dbhost -d dbname path

  • 相关阅读:
    程序员父亲的遗产——编程十诫 转载
    如何跟程序员谈一场没有Bug的恋爱
    java集合(ArrayList,Vector,LinkedList,HashSet,TreeSet的功能详解)
    CentOS7.0下载各版本说明 新增Everything版
    Virtualbox虚拟机安装CentOS 6.5图文详细教程
    s:iterator数据累加示例代码
    关于程序员的59条搞笑但却真实无比的编程语录
    jQuery EasyUI API 中文文档
    Java发送带html标签内容的邮件
    javascript比较两个时间大小
  • 原文地址:https://www.cnblogs.com/jentary/p/12333353.html
Copyright © 2011-2022 走看看