欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mongodb细讲

程序员文章站 2022-09-11 15:53:57
一、 关系型数据库(sql) 1.建表 二、非关系型数据库(nosql 98提出的概念) 1.不用建库建表数据直接存入就可 优缺点: 关系型:节约资源(学生姓名和课程名不重复出现),开发不方便(需先建库建表,外键等) 非关系型:浪费资源(学生姓名和课程名重复出现),开发方便(不需要建库建表,数据直接 ......

一、 关系型数据库(sql)

1.建表

mongodb细讲mongodb细讲mongodb细讲

 

 

二、非关系型数据库(nosql  98提出的概念)

1.不用建库建表数据直接存入就可

  mongodb细讲

优缺点:

  关系型:节约资源(学生姓名和课程名不重复出现),开发不方便(需先建库建表,外键等)

  非关系型:浪费资源(学生姓名和课程名重复出现),开发方便(不需要建库建表,数据直接存)

  开发常用关系型,爬虫常用非关系型

 

三、ubuntu安装: sudo apt-get install mongodb

  centos安装:sudo yum install mongodb

四、mongodb基本操作:

  1.启动:sudo service mongodb start

  2.停止:sudo service mongodb stop

  3.重启:sudo service mongodb restart

  4.进入客户端:mongo

    mongodb细讲

    出现上图代表正确进入

  5.退出客户端:exit、ctrl + c

  6.默认端口:27017

  7.默认配置文件位置:/etc/mongod.conf

  8.默认日志位置:/var/log/mongodb/mongod.log

  9.查看帮助命令:mongod -help  (或进入mongo直接 help)

  10.关于database的基本命令:

    a.查看所有的库:show database、  show databases、show dbs

    b.使用一个库:use 库名

    c.查看当前库名:db

    d.切换数据库:use 库名

    e.删除当前数据库:db.dropdatabase()

    f.第一次向数据库中加入数据时,数据库自动创建。

  11.关于集合的基本命令:

    a.不用手动创建集合,向不存在的集合第一次加入数据时,集合会自动创建出来

      mongodb细讲

      如图集合会自动创建

    b.手动创建集合:

      db.createcollection('stu')

      db.createcollection(name, options)

      db.createcollection('stu', {capped:true, size:10})

      参数capped:默认为false表示不设置上限,当值为true表示设置上限,参数size当capped为true时,需要指定此参数,表示上限大小,单位为字节,如果数据超过上限,会将之前的数据覆盖。

    c.查看集合:show collections

    d.删除集合:db.集合名.drop()

  12.数据类型:

    objectid:文档id

    string 字符串,必须是有效的utf-8

    boolean   存储一个布尔值    true     false

    integer 整数    32位或64位取决于服务器

    double   浮点型

    arrays    数组,列表,多个值存储到一个键

    object    一个值就是一个文档

    null        存储null值

    timestamp       时间戳,表示从1970.1.1到现在的总秒数

    date       存储当前的日期或时间

    objectid  是一个12字节的十六进制数,前四个字节是当前的时间戳,接下来三个字节是机器的id,接下来的两个字节是mongodb的服务进程id最后三个字节是简单增量值 

  13.数据插入:

    db.集合名.insert(数据)

    db   指的是本数据库

    集合名   相当于mysql中的表    例:

      mongodb细讲

  14.保存:

    db.集合名.save(数据)

    如果_id不存在,则添加数据,如果_id存在,则修改数据

    例:

      mongodb细讲

  15.简单查询:

    db.集合名.find()  例:

      mongodb细讲

  16.复杂查询:

    比较运算符(等于(默认)、小于($lt)、小于等于($lte)、大于($gt)、大于等于($gte)、不等于($ne))

     例:

      mongodb细讲

    逻辑运算符:

      and:直接写多个条件

        mongodb细讲

      or:使用 $or,值为一个数组,数组中每个元素为json

        mongodb细讲

         组合使用

        mongodb细讲

      $in 范围之内

      $nin 不在范围之内

        mongodb细讲

  17.排序:

    db.集合名.find().sort({字段:1})   参数1位升序,-1位降序

    升序   db.stu1.find().sort({math:1})

    降序   db.stu1.find().sort({math:-1})

  18.统计个数

    方法count()用于统计结果集中文档条数

    db.集合名.find().count()

    db.集合名.count({条件})

    mongodb细讲

  19.消除重复

    方法distinct()对数据进行去重

    db.集合名.distinct('去重字段',{条件})

    例:

      mongodb细讲

  20.更新

    db.集合名.update(<qurey>, <update>, {multi:<boolean>})

    参数query:查询条件

    参数update:更新操作符

    参数multi:可选,默认值false,表示只更新找到的第一条记录;值为true,表示把满足条件的条件全部更新

    mongodb细讲

    可见这样更新有问题,应该这样:

    mongodb细讲

    发现这样只会更新一条,若更新全部应:

    mongodb细讲

   21.删除

    db.集合名.remove(<query>, {justone:<boolean>})

    参数query:可选,删除文档条件

    参数justone:可选,默认为false,表示删除多条;如果设置为true或1,则只删除一条

    mongodb细讲

   22.查询结果处理

    查询结果格式化:

      db.集合名.find(条件).pretty()

      mongodb细讲

      db.集合名.findone(条件):只返回第一个结果

    指定文档数量

      方法limit()  用于读取指定数量的文档

        db.集合名.find().limit(number)

      方法skip()  用于跳过指定数量的文档

        db.集合名.find().skip(number)

  23.投影

    在查询的返回结果中,只选择必要字段

      db.集合名.find({}, {字段名1:1,字段名2:1})

      参数为字段名,值1表示显示,值为0表示不显示

      特殊:对于_id列默认是显示的,如果不显示需要明确设置为0

      mongodb细讲