mongoDB的安装及基本使用

概念

MongoDB是为快速开发互联网Web应用而设计的数据库系统。
MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分。
MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。(BSON)

安装

下载

下载网址:https://www.mongodb.com/download-center/community

选择对应的OS及安装包格式:

我这里选择的是zip压缩包,这样不用安装,直接解压就可以使用。

安装

1.将下载好的压缩包解压到任意目录

2.配置环境变量,在mogodb目录下的bin文件夹添加到环境变量

3.在C盘根目录下新建如下目录:

C:\data\db
C:\data\log

4.启动mongodb服务端
打开cmd,输入mongod即可启动

5.启动mongodb客户端
新打开一个cmd,输入mongo即可连接mongodb服务。

MongoDB服务器

  • 1) 服务器负责在计算机创建数据库,使用数据库需要先启动服务器
  • 2) MongoDB的默认端口号 27017
    • a. 可以通过 --port 来指定端口号
    • b. 端口号尽量使用四位以上,不要超过最大端口号65535
    • c. 不能使用其他服务占用的端口号
      3) MongoDB数据库默认会存放在C盘根目录下的data/db
    • a. 可以通过 --dbpath 指令来指定数据库的目录
      结合使用:
      mongod --dbpath C:\Users\web\Desktop\database --port 12345
      注意:启动服务的命令行窗口不能关闭!

MongoDB客户端

  • 1) 通过客户端来管理数据库
  • 2) 使用mongo来启动客户端

MongoDB基本命令

db 查看当前在操作哪一个数据库
show dbs 查看数据库列表(一共有几个数据库,备注:如果数据库为空,不出现在列表中)
db.students.insert({}) 向当前数据库的students集合中插入一个文档
show collections 展示当前数据库中所有的集合
use test 切换到test数据库,如果不存在,则创建一个test库
db.students.find() 查询students集合的所有记录

作为windows系统服务启动

  • 1)在MongoDB的安装目录添加一个配置文件
    目录:E:\www\server\mongodb
    文件:mongod.cfg
    内容:
systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db
net:
    port: 27017
  • 2)以管理员身份打开命令行窗口
  • 3)执行以下指令
sc create MongoDB binPath= "\"E:\www\server\mongodb\bin\mongod.exe\" --service --config=\"E:\www\server\mongodb\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
  • 4)打开系统服务器,启动名为MongoDB的服务
  • 5)如果无法启动服务,在管理员的命令行窗口中输入如下指令:
sc delete MongoDB
  • 6)重复步骤1

CRUD命令总结

  • -C creat:
    db.集合名.insert(文档对象)
    db.集合名.insertOne(文档对象)
    db.集合名.insertMany([文档对象,文档对象])
    
  • -R read:
    db.集合名.find(查询条件[,投影])
    

    举例:
    1)查找年龄为18的所有信息

    db.students.find({age:18})
    

    2)查找年龄为18且名字为jack的学生

    db.students.find({age:18,name:'jack'})
    

    3)查找年龄为18的一条信息

    db.students.find({age:18}).limit(1) 
    

    4)按年龄排序(其中 1 为升序排列,而 -1 是用于降序排列。)

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

    常用操作符:
    1. < , <= , > , >= , !== 对应为: $lt $lte $gt $gte $ne
    举例:
    年龄是大于等于20的
    db.集合名.find({age:{$gte:20}})
    2.逻辑或:$in 或 $or
    查找年龄为18或20的学生
    db.students.find({age:{$in:[18,20]}})

    db.students.find({$or:[{age:18},{age:20}]})
    3.逻辑非:$nin
    4.正则匹配:
    举例:db.students.find({name:/^T/})
    5.$where能写函数:
    db.students.find({$where:function(){
    return this.name === 'zhangsan' && this.age === 18
    }})

    投影:过滤掉不想要的数据,只保留想要展示的数据
    举例:
    过滤掉id和name
    db.students.find({},{_id:0,name:0})
    只保留age
    db.students.find({},{age:1})

    补充:db.集合名.findOne(查询条件[,投影]),默认只要找到的第一个

  • -U update:

    db.集合名.update(查询条件,要更新的内容[,配置对象])
    
    //如下会将更新内容替换掉整个文档对象,并且_id不受影响
        举例:db.students.update({name:'zhangsan'},{age:19})
    
    //使用$set修改指定内容,其他数据不变,不过只能匹配一个zhangsan
        举例:db.students.update({name:'zhangsan'},{$set:{age:19}})
    
    //修改多个文档对象,匹配多个zhangsan,把所有zhangsna的年龄都替换为19
        举例:db.students.update({name:'zhangsan'},{$set:{age:19}},{multi:true})
    
     补充:db.集合名.updateOne(查询条件,要更新的内容[,配置对象])
           db.集合名.updateMany(查询条件,要更新的内容[,配置对象])
    
  • -D delete
    db.集合名.remove(查询条件)
    //删除所有年龄小于等于19的学生
    举例:db.students.remove({age:{$lte:19}})

排序

如果你的数字是用字符串来存的,那么排序时会有问题。

  • 字符串按数值大小排序
db.stock.find({}).collation({"locale": "zh", numericOrdering:true}).sort({stock_code:1})
  • Collation包含的字段:
{
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}

说明:

  • 当使用collation时,字段locale必须要有值。
  • numericOrdering决定字符串是否按照数值来排序,默认为false
  • caseFirst决定大小写谁排在前头,“upper”大写排在小写前头,“lower”小写排在大写的前头。

开启远程连接权限

首先,修改配置文件中的bind_ip改为0.0.0.0 (让其他电脑可以访问,用于远程连接,如果bind_ip是127.0.0.1的话,就只能本地访问)

然后找到 #security:改成下图所示,开启安全认证。

security:
    authorization: enabled #注意缩进,参照其他的值来改,若是缩进不对可能导致后面服务不能重启

防火墙开放27017端口

使用账号密码登录

在命令行下通过mongo登录,然后输入命令:

db.auth('账号','密码')

如果输出1则表示授权成功,如果提示Authentication failed,有可能是当前没有在有权限的数据库下,需要先use dbName来切换到有权限的数据库,然后再执行auth命令。

发表评论

邮箱地址不会被公开。 必填项已用*标注