精华内容
下载资源
问答
  • ubuntu软件下载安装中心

    千次阅读 2019-07-11 11:08:23
  • MongoDB的安装非常简单,在下载完成后,接直接双击下载好的MongoDB安装包,进入MongoDB安装界面,点击Next下一步、同意条款、选择安装路径 和 日志路径、勾选是否安装MongoDB Compass(MongoDB数据库图形管理工具,...

    一、关于MongoDB数据库

    MongoDB 官网https://www.mongodb.com

    MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统

    MongoDB 可在高负载的情况下,添加更多的节点,可以保证服务器性能

    MongoDB 可为Web应用提供可扩展高性能数据存储解决方案。

    MongoDB 将数据存储在灵活的json文档中,这意味着可以直接得到从文档到文档的数据、结构等。

    MongoDB 是免费使用的(MongoDB分 社区版[在所有环境下都免费] 和 企业版[在开发环境免费,生产环境收费]两个版本)

    MongoDB 数据库具有可伸缩性灵活性,可帮助你快速查询索引你需要数据。

     

    二、MongoDB数据库下载:

    1、官方下载地址: https://www.mongodb.com/try/download

     

     

    在这里根据自己的需要,选择下载对应系统的MongoDB数据库版本(:在MongoDB版本中,是偶数:如3.2.x、3.4.x、3.6.x表示正式版【可用于生产环境】,是奇数:3.1.x、3.3.x、3.5.x表示开发版,而OS系统版本:自动给你推荐你当前适合的MongoDB数据库版本)

    然后点击 Download按扭后,进入下载页面:

     

    注:进入上面这个下载页面后,会自动开始下载!!!(如没反应就F5 刷新一下当前页面,由于是外网,所以就耐心点吧!)。

     

     

    2、其他下载方式:除了上面的下载方式以外,也可以试试下面的下载链接!!

    1. MongoDB Windows系统64位下载地址:http://www.mongodb.org/dl/win32/x86_64
    2. MongoDB Windows系统32位下载地址:http://www.mongodb.org/dl/win32/i386
    3. MongoDB 全部版本下载地址:http://www.mongodb.org/dl/win32

     

     

    三、MongoDB数据库的安装:

    MongoDB的安装非常简单,在下载完成后,接直接双击下载好的MongoDB安装包,进入MongoDB安装界面,点击Next下一步、同意条款、选择安装路径 和 日志路径、勾选是否安装MongoDB Compass(MongoDB数据库图形管理工具,类似MySQL的Navicat ),其它的步骤一直点下一步直到完成安装就OK啦。

    点击开始安装:

     

    选择MongoDB安装方式:

     

    选择MongoDB安装路径: 

    注意:MongoDB 3.x系列版本的数据库,在安装成功后,每次在使用前都需要手动启动MongoDB服务!

    启动命令:
    mongod --dbpath 数据库路径
    
    如:
    mongodb --dbapth D:/database/mydb

    现在:MongoDB 4.x系列版本的数据库,在安装时默认安装(选中了 Install MongoD as a Service)服务 ,就是在开机时自动启动 MongoDB 服务,然后就可以直接使用啦!

    // 在Windows环境下:
    
    1、运行 Win + R
    
    2、输入 services.msc 命令便可以查看到 MongoDB Server (MongoDB) 服务啦!!

    MongoDB 4.x安装具体如下所示:

     

    选择MongoDB数据库图形化界面管理工具: 

     

    然后就一直下一步、Next 直到 Flnish 安装完毕,到此就MongoDB就安装结束啦!

     

    四、MongoDB数据库可视(图形)化管理工具:

    1、下载地址:https://www.mongodb.com/try/download/compass

    2、注意事项:在MongoDB Compass选择下载时,可选择对应的系统版本(这里以windows系统为例):

    • zip绿色版(免安装,解压后就可以用)
    • msi安装版(Windows Installer的数据包,需要一步步安装到本地)
    • exe安装版(可执行文件,需要一步步安装到本地)

     

    下面是Msi安装版,安装界面:

    MongoDB Compass的安装没有什么好配置的,直接点击 Next 至到 Flnish 就安装结束啦!

    MongoDB数据库的图形化的数据库管理工具,可以在这里面对数据进行很友好的操作:如查看、编辑、导入、导出等相应的。

     

     

    五、文件功能解释:

    MongoDB v3.6版 安装目录:C:\Program Files\MongoDB\Server\3.6\bin

    MongoDB v4.4版 安装目录:C:\Program Files\MongoDB\Server\4.4\bin

     

    六、环境变量配置:

    1、配置MongoDB全局环境变量(就是在电脑中任何地方都可以合用mongo、mongod等命令)!

    注:配置完成后,重启电脑, 环境变量才生效哦!重启后,我们就能在系统的任何位置,使用mongo命令了:

    如:查看MongoDB数据库存的版本:

    mongod -version
    
    // 该命令会显示MongoDB数据库的相关信息,如果能显示信息,就表示已安装成功了!!!

     

    2、MongoDB数据库中的常用述语:

    1、在MongoDB中,数据库是以文件形式存储的,数据库目录中存储了相应的数据库!

    2、在MongoDB中,把传统数据库中的 "表" 叫作:Collections "集合"

           3、在MongoDB中,向集合存储数据时,直接以JSON格式,进行存取操作!

           4、在MongoDB中,集合中的数据叫作:Documents "文档"

     

    3、进入MongoDB数据库的语法环境:

    在命令窗口中,输入 mongo 回车, 就进入了MongoDB数据库的语法环境了!

    注:安装好MongoDB数据库后,默认是【非授权模式】(也就是不需要任何权限验证,直接在命令窗口中输入 mongo 回车,就连接上了)。

    MongoDB默认IP 和 端口是:mongodb://127.0.0.1:27017 或 mongodb://localhost:27017

     

    七、MongoDB账户权限配置:

    由于:安装好MongoDB数据库后,默认是【非授权模式】(也就是不需要任何权限验证、不需要验证账户,直接在命令窗口中输入 mongo 回车,就可以进行相关操作),这是非常不安全的(尤其是在生产环境中,当然如果是自己玩玩的话就无所谓了)!!

    所以:为了数据的安全,我们都应该去配置数据库的访问权限 和 修改默认(mongodb://127.0.0.1:27017)连接绑定IP 和 端口号!!

    1、创建MongoDB超级管理用户:

    #1、进入mongo语法环境
    mongo
    
    #2、创建admin数据库
    use admin
    
    #3、添加管理员用户(用户名admin 和 密码123456 是可以自定义的 【但是要记牢哦!!】)
    db.createUser({
        user:"admin",
        pwd:"123456",
        roles:["root"]  // 角色root是超级管理员 
    }) 
    • MongoDB数据库账户配置常用命令:
    # 查看当前数据库中的用户
    show users
    或:db.getUsers()
    
    # 登录认证
    db.auth("admin", "123456")
    
    # 创建用户
    db.createUser({
        user:"admin",    // 用户名
        pwd:"123456",    // 密码
        roles:["root"]   // 角色
    }) 
    
    # 修改用户密码
    db.updateUser( "admin", {
        pwd: "abc666"
    })
    
    # 删除用户
    db.dropUser("admin")  // admin 是要删除的用户名
    • MongoDB数据库中的内置角色:
    (1)、【数据库用户角色】针对每一个数据库进行控制。
    read:提供了读取所有非系统集合,以及系统集合中的system.indexes, system.js, system.namespaces
    readWrite:包含了所有read权限,以及修改所有非系统集合的和系统集合中的system.js的权限.
    
     
    (2)、【数据库管理角色】每一个数据库包含了下面的数据库管理角色。
    dbOwner:该数据库的所有者,具有该数据库的全部权限。
    dbAdmin:一些数据库对象的管理操作,但是没有数据库的读写权限。(参考:http://docs.mongodb.org/manual/reference/built-in-roles/#dbAdmin)
    userAdmin:为当前用户创建、修改用户和角色。拥有userAdmin权限的用户可以将该数据库的任意权限赋予任意的用户。
    
     
    (3)、【集群管理权限】admin数据库包含了下面的角色,用户管理整个系统,而非单个数据库。这些权限包含了复制集和共享集群的管理函数。
    clusterAdmin:提供了最大的集群管理功能。相当于clusterManager, clusterMonitor, and hostManager和dropDatabase的权限组合。
    clusterManager:提供了集群和复制集管理和监控操作。拥有该权限的用户可以操作config和local数据库(即分片和复制功能)
    clusterMonitor:仅仅监控集群和复制集。
    hostManager:提供了监控和管理服务器的权限,包括shutdown节点,logrotate, repairDatabase等。
    备份恢复权限:admin数据库中包含了备份恢复数据的角色。包括backup、restore等等。
    
     
    (4)、【所有数据库角色】
    admin:数据库提供了一个mongod实例中所有数据库的权限角色:
    readAnyDatabase:具有read每一个数据库权限。但是不包括应用到集群中的数据库。
    readWriteAnyDatabase:具有readWrite每一个数据库权限。但是不包括应用到集群中的数据库。
    userAdminAnyDatabase:具有userAdmin每一个数据库权限,但是不包括应用到集群中的数据库。
    dbAdminAnyDatabase:提供了dbAdmin每一个数据库权限,但是不包括应用到集群中的数据库。
    
    
    (5)、【超级管理员权限】
    root: dbadmin到admin数据库、useradmin到admin数据库以及UserAdminAnyDatabase。但它不具有备份恢复、直接操作system.*集合的权限,但是拥有root权限的超级用户可以自己给自己赋予这些权限。
    
    
    (6)、【备份恢复角色】
    backup:数据库备份
    restore:数据库恢复
    
    
    (7)、【内部角色】
    __system

     

    2、修改MongoDB数据库配置:

    MongoDB数据库的相关配置信息,是存储在mongodb安装目录bin目录中的mongod.cfg文件中,

    注:在修改mongod.cfg文件之前,请记得要先备份一份哦,以防万一!!

    如上图所示,开启数据库访问权限验证:修改完成后,记得要保存哦!!

    注:前面代有 # 的配置项,表示被注释(无效)状态的)

    # 开启数据库访问权限验证(注意:换行、缩进格式哦!!)
    security: 
      authorization: enabled

    3、重新启动MongoDB服务

    注:只要修改了mongod.cfg文件,一定要重新启mongodb服务后才会生效哦!!

    打开服务步骤:

    此电脑(计算机) 右键 -> 管理 -> 服务和应用程序 -> 服务 -> MongoDB Server (MongoDB) -> 右键 点击 重新启动(E)或 点击左侧的(重启动此服务)

    或者 Win + R 运行 services.msc 也能打开如下 服务界面,找到 MongoDB Server (MongoDB) -> 右键 点击 重新启动(E)或 点击左侧的(重启动此服务)

    4、用刚才创建好的超级管理账户连接数据库:

    注:重新启动mongodb服务后,用一个新的命令窗口来做操作:通过如下图所示,在配置账户权限后,直接在命令窗口中用 mongo 命令,运行相关的操作是没有响应的,只有在正确的输入账户和密码后才进行相关操作!!

    连接本地MongoDB数据库:(不用指定 绑定IP 和 端口号)

    连接运程MongoDB数据库:(必须指定 绑定IP 和 端口号)

     

    5、给指定的数据库存配置账户:

    这里以 myweb 数据库为例,给myweb配置一个账户,注:各个不同的数据库之间,可以创建有一个 或 多个账户,各数据库之间账户、密码都是独立的,不能互相访问!

    // 给myweb数据库 创建一个名为:mupiao 的账户,角色为:dbOwner
    db.createUser({
        user:"mupiao", 
        pwd: "123456", 
        roles: [{
            role: "dbOwner", 
            db: "myweb"
        }]
    })

    6、连接指定的MongoDB数据库

    这里就用上面在 myweb数据库中创建的账户来演示 连接过程!

    在命令窗口中连接:

    在MongoDBCompass 可视化工具中连接:

     

    八、MongoDB数据库常用命令:

    上面就是MongoDB数据库的语法环境了,现在我们可以在命令窗口中执行一些MongoDB数据库的命令、语法啦!下面例出了一些常用的MongoDB数据库操作命令!

     

    1、查看所有数据库:

    show dbs

     

    2、查看当前所在数据库:

    db

     

    3、查看当前所在数据库中所有集合:

    show collections
    
    // 查看user集合(用户表)中的所有记录
    db.user.find().pretty()
    
    // 加上.pretty() 让显示结果更友好明了!

     

    4、查看当前数据库相关信息(名称、文档个数、视图、索引、大小等):

    db.stats()


    5、创建、打开、切换 数据库:

    use 数据库名字
    
    // 如:use mydb

     

    use 这个命令很特殊:

    use命令具有打开、 切换、 创建数据库的功能: 

    1. 如果打开的这个数据库存在就是打开这个数据库
    2. 如果打开的是一个不存在的数据库(没有这个数据库名字),那么就会创建一个同名的数据库。

    注:在MongoDB中创建一个新的数据库时,需要向数据库中创建一个集合(collections【就像关系数据库中的表】),并且插入一条数据,这个数据库才能创建成功!!

    如:往集合中插入一条数据。可以不用先创建集合,直接往里添加数据即可:

    db.user.insert({"name": "xiaoming"})     // user 就是集合(表)名
    
    或
    
    db.user.save({name:"沐枫", job:"Web前端"})  // 效果和上面一样,都是添加数据

    当命令执行后,数据库系统发现student是一个数据集合不存的,就自动创建一个集合,并随着数据的插入,数据库和集合也就真正的创建成功了。


    6、删除数据库(注:这里是删除当前所在的数据库)

    注:这个命令一定要慎用,一旦该命令一执行一下当前所在数据库中的所有数据都玩完了!!!,除非您想删库跑路,哈哈!!

    db.dropDatabase()

     

    7、清屏(这是Dos的命令,当窗口中的内容太多时,可以使用该命令,清除屏幕内容,保持界面清晰):

    cls

     

    8、MongoDB 数据库备份与恢复,集合导入与导出:

    MongoDB数据库的备份与恢复可直接在命令行工具中完成:

    命令说明:

    • mongodump :     //数据库备份
    • mongorestore:    //数据库恢复(还原备份)
    • mongoimport:     //没集合导入
    • mongoexport:     //集合导出

    参数说明:

    • -h 数据库IP地址: //如果是当前本机数据库,可以去掉-h
    • --port 端口号:     //如果是默认端口,可以去掉--port
    • -u 用户名:           //如果没有用户,可以不用指定-u
    • -p 密码:              //如果没有密码,可以不用指定-p
    • -d 数据库名称:   //如果不指定则导出所有数据库
    • -c 集合名称
    • -o 文件存在路径 
    • 注:每个参数前后是有空格的哦!!

    --drop     // 清空集合原有数据

    --file xxx.json   // 指定文件

    注:除了用命令进行导入导出以外,还可以用MongoDB Compass(数据库图形管理工具)进行导入导出等操作!!

    使用 mongodump 命令来备份 MongoDB 数据。该命令可以导出所有数据到指定目录中。mongodump 命令可以通过参数指定导出的数据量级转存的服务器。

    语法格式:
    mongodump -h 数据库地址 -d 数据库名称 -o 数据库备份输出路径

    使用mongorestore 命令来恢复备份的数据。

    恢复语法格式:
    mongorestore -h 数据库地址 -d 数据库名称 数据库备份存储路径

     

    将JSON文件形式将数据导入到数据库 指定的集合中:

    项目开发有时候需要一些测试数据,如一条条的insert在繁琐了。所以,我们可以在代码编辑器中以json格式编辑好要插入的数据,以.json文件格式保存,然后导入到数据库中:

    下面就是将mydata.json文件,导入到test数据库的student集合中。

    mongoimport -d mydb -c user --drop --file D:\db\mydata.json
    

     

    以JSON文件形式将数据库 指定的集合导出:

    mongoexport -d mydb -c user -o D:\db\mydata.json

     

     

    9、操作帮助命令(列出MongoDB数据库所有的操作方法)

    db.help()
    DB methods:
            db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [just calls db.runCommand(...)]
            db.aggregate([pipeline], {options}) - performs a collectionless aggregation on this database; returns a cursor
            db.auth(username, password)
            db.cloneDatabase(fromhost)
            db.commandHelp(name) returns the help for the command
            db.copyDatabase(fromdb, todb, fromhost)
            db.createCollection(name, {size: ..., capped: ..., max: ...})
            db.createView(name, viewOn, [{$operator: {...}}, ...], {viewOptions})
            db.createUser(userDocument)
            db.currentOp() displays currently executing operations in the db
            db.dropDatabase()
            db.eval() - deprecated
            db.fsyncLock() flush data to disk and lock server for backups
            db.fsyncUnlock() unlocks server following a db.fsyncLock()
            db.getCollection(cname) same as db['cname'] or db.cname
            db.getCollectionInfos([filter]) - returns a list that contains the names and options of the db's collections
            db.getCollectionNames()
            db.getLastError() - just returns the err msg string
            db.getLastErrorObj() - return full status object
            db.getLogComponents()
            db.getMongo() get the server connection object
            db.getMongo().setSlaveOk() allow queries on a replication slave server
            db.getName()
            db.getPrevError()
            db.getProfilingLevel() - deprecated
            db.getProfilingStatus() - returns if profiling is on and slow threshold
            db.getReplicationInfo()
            db.getSiblingDB(name) get the db at the same server as this one
            db.getWriteConcern() - returns the write concern used for any operations on this db, inherited from server object if set
            db.hostInfo() get details about the server's host
            db.isMaster() check replica primary status
            db.killOp(opid) kills the current operation in the db
            db.listCommands() lists all the db commands
            db.loadServerScripts() loads all the scripts in db.system.js
            db.logout()
            db.printCollectionStats()
            db.printReplicationInfo()
            db.printShardingStatus()
            db.printSlaveReplicationInfo()
            db.dropUser(username)
            db.repairDatabase()
            db.resetError()
            db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into {cmdObj: 1}
            db.serverStatus()
            db.setLogLevel(level,<component>)
            db.setProfilingLevel(level,slowms) 0=off 1=slow 2=all
            db.setWriteConcern(<write concern doc>) - sets the write concern for writes to the db
            db.unsetWriteConcern(<write concern doc>) - unsets the write concern for writes to the db
            db.setVerboseShell(flag) display extra information in shell output
            db.shutdownServer()
            db.stats()
            db.version() current version of the server

     

    九、启动 或 创建 指定的MongoDB数据库:

    MongoDB数据库是以文档形式存储的,我们可以根自己的项目需要,在各自不同的项目中,指定MongoDB数据库目录(如在Vue 或 React 项目的根目录,和 package.json文件同级的目录中,创建一个名为database的文件夹)中去创建MongoDB数据库的存储目录!

    使用 mongod 命令: 创建 或 启动 指定的MongoDB数据库!

    mongod这个命令很特殊,和use命令一样,如果指定的目录中有数据库就是启动,没有就是创建并启动!

    mongod --dbpath 数据库目录
     
    // 如: mongod --dbpath D:\Vue\myapp\database

    如果mongodb数据库路径太长,要输入很久,还可这样做

    1、在dos命令行中先输入以下命令:
     
    mongod --dbpath 
     
    2、需要注意思的是,在--dbpath的后面加上一个空格
     
    3、找到数据库所在的目录文件夹,直接将这个文件夹拖到命令窗口中去
     
    4、此时,数据库的路径有自动有啦!!

    注意:

    启动成功后,一定不要关闭这个命令窗口,而且这个命令窗口中也不能再做其他操作了,然后就可以在MongoDB图形化管理工具中看查数据库 或 在项目中链接使用MongoDB数据库啦。

    当然在有些时候,如果想要用命令行操作MongoDB数据库的话,就要再打开一个新Dos窗口!!!

    输入mongo命令就进入了MongoDB数据库的语法环境了(一定要先启动MongoDB数据库后,在进行MongoDB数据库的操作)

     

     

    十、MongoDB数据库-复制集

    1、为什么要用复制集?

    为了保证数据的安全,推荐使用复制集的方式来存储数据,一般复制集节点数至少要有3个,就相当于有3个MongoDB数据库,一主两从,这样一来,即便是当主节点宕机了,其他的从节点通过投票选举(所以,一般复制集节点数量不能是偶数,不然就会出现评局的状态),选出一个新的主节点出来继续工作,而且数据也不会丢失!!

     

    2、在windows系统下搭建MongoDB复制集:

    1、新建MongoDB复制集节点目录,如:在D盘下的MongoDB目录下,新建3个文件夹,分别命名为:db1,db2,db3 用于存放复制集节点

    2、分别在db1,db2,db3这3个文件夹中新建一个文件命名为:mongod.conf 内容如下:

    # mongod.conf 文件
    systemLog:
        destination: file
        path: D:\MongoDB\db1\mongod.log   # 设置日志文件存放路径
        logAppend: true
    ​
    storage:
        dbPath: D:\MongoDB\db1   # 数据存储目录
    ​
    net:
        bindIp: 0.0.0.0     # 数据库地址:0.0.0.0 表示所有
        port: 28017     # 数据库端口号
    ​
    replication:
        replSetName: rs0    # 复制集节点名称

    注:

    * path 和 dbPath 配置项中的路径一定要和当前所有的目录名对应!如:db1,db2,db3
    * port 数据库端口号也不能重复!如:28017,28018,28019

    如:db2目录下的mongod.conf 内容如下

    # mongod.conf 文件
    systemLog:
        destination: file
        path: D:\MongoDB\db2\mongod.log   # 设置日志文件存放路径
        logAppend: true
    ​
    storage:
        dbPath: D:\MongoDB\db2   # 数据存储目录
    ​
    net:
        bindIp: 0.0.0.0     # 数据库地址:0.0.0.0 表示所有
        port: 28018     # 数据库端口号
    ​
    replication:
        replSetName: rs0    # 复制集节点名称

     

    3、启动复制集节点

    注:由于windows系统不支持fork,以所要分别用不同的命令窗口来启动,如这里有3个复制集节点,所有就要开3个命令窗口来打开,这样就会启动3个mongodb进程,并且启动后不能关闭该命令窗口,否则进程也会随之结束!!

    # 命令窗口1
    mongod -f D:\MongoDB\db1\mongod.conf
    ​
    # 命令窗口2
    mongod -f D:\MongoDB\db2\mongod.conf
    ​
    # 命令窗口3
    mongod -f D:\MongoDB\db3\mongod.conf

    通过以上命令启动好3个复制集节点后,可以在命令窗口中查看,mongodb的进程情况

    ps mongo

     

    4、关联复制集节点

    上面虽然创建了3个复制集节点,但它们之间还没有任何关系,还是相互独立的,所以要将们关联起来,当有数据入后3个节点都会有数据,这样一来,即便是当主节点宕机了,其他的从节点通过投票选举(所以,一般复制集节点数量不能是偶数,不然就会出现评局的状态),选出一个新的主节点出来继续工作,而且数据也不会丢失!!

    1. 再新开一个命令窗口操作,在windows系统中查看当前hostname 主机名

      hostname
      ​
      # MuGuiLin //这是我在windows系统中查看当前hostname 主机名

      注:如果各个复制集节点之间不是在同一台服务器上(当然推荐分开部署,这里为了演示所以就在一台电脑上),就需要对应的服务器IP 或域名

       

    2. 然后进入28017节点

      mongo localhost:28017

       

    3. 设置复制集主节点,在没有设置复制集主节点之前,各个节点都是一样平级的,但一般情况下,我们都将第1个端口号的节点做为主节点!

      rs.initiate()
      ​
      # 执行以上命令后就进入复制集节点状态了
      
      rs0:SECONDARY> 回车          # 默认是从节点状态,按回车键可切换到主节点状态
      ​
      rs0:PRIMARY>                 # PRIMARY 表示进入主节点状态了
      ​

       

    4. 查看复制集节点状态信息 和 配置信息

      rs0:PRIMARY>rs.status()
      
      rs0:PRIMARY>rs.config()
      ​
      # 通过以上命令可以查看复制集节点的相关信息,其中"members":[...] 数组中就是各个节点的信息,由于还没有关联其他的节点,所以现在只有一个

       

    5. 分别关联端口为28018 和 28019 的这两个复制集节点

      rs0:PRIMARY>rs.add("MuGuiLin:28018")
      rs0:PRIMARY>rs.add("MuGuiLin:28019")
      ​
      # 执行以上命令后,再查看复制集节点,在"members":[] 数组中应该就有3个节点信息了
      rs0:PRIMARY>rs.status()

      到此复制集节点的关联工作就完成了!

     

    5、查看从节点是否正常同步数据

    1、先在28017主节点上插入一条数据

    # 进入28017节点
    mongo localhost:28017
    ​
    # 查看所以数据库
    rs0:PRIMARY>show dbs
    ​
    # 向test数据库中的test集合插入一条数据
    rs0:PRIMARY>db.test.insert({name: "OK 666 MongoDB 数据库 复制集"})
    ​
    # 查看当前数据库下的所有集合
    rs0:PRIMARY>show collections
    ​
    # 查看test集合中的所有数据
    rs0:PRIMARY>db.test.find().pretty()

    writeConcern 数据写入配置:

    注意:默认情况下插入数据时只要写入主节点(不管是否同步到从节点)就返回提示数据写入成功。  

    所以:如果要保证在写入数据时,所的的节点 或 指定的节点都落盘(成功写入)后,才返回提示数据写入成功。

    writeConcern 决定一个写操作落到多少个节点上才算成功。writeConcern 的取值包括:

    • 0 表示发起写操作,不关心是否成功; 
    • 1~集群最大数据节点数 表示写操作需要被复制到指定节点数才算成功;
    • majority 表示写操作需要被复制到大多数节点上才算成功。 发起写操作的程序将阻塞到写操作到达指定的节点数为止
    例如:指定写入3个节点才算成功
    rs0:SECONDARY>db.test.insert({name: "插入一条测试数据 -> 我要等3个复制集节点都插入成功了,我才返回功能!"},{writeConcern:{w:3}})
    
    # writeConcern 参数说明:
    w: 节点数
    w: "majority"  # 大多数节点确认模式(一半以上: 共3有个节点,只要2个节点写入成功即可)
    w: "all"  # 全部节点确认模式
    
    
    writeConcern中的另一个参数:j 可以决定写操作到达多少个节点才算成功,journal 则定义如何才算成功。
    取值包括:
    
    j: true 表示写操作落到 journal 文件中才算成功!
    j: false 表示写操作到达内存即算作成功!

    writeConcern注意事项:

    • 虽然多于半数的 writeConcern 都是安全的,但通常只会设置 majority,因为这是 等待写入延迟时间最短的选择;
    • 不要设置 writeConcern 等于总节点数,因为一旦有一个节点故障,所有写操作都 将失败;
    • writeConcern 虽然会增加写操作延迟时间,但并不会显著增加集群压力,因此无论 是否等待,写操作最终都会复制到所有节点上。设置 writeConcern 只是让写操作 等待复制后再返回而已;
    • 应对重要数据应用 {w: “majority”},普通数据可以应用 {w: 1} 以确保最佳性能;

     

    2、在从节点28018 或 28019中查看是否有数据同步过来

    # 进入28019节点
    mongo localhost:28019
    ​
    # 开启从节点读的权限,默认情况下,从节点是不能读取的,所以要开启读的权限rs.slaveOk()
    rs0:SECONDARY> rs.slaveOk()
    ​
    # 查看test集合中的所有数据
    rs0:SECONDARY>db.test.find().pretty()
    ​
    # 执行以上查看命令后,如果能够正常显示在主节点28017上插入的数据,就表示数据已经同步过来啦!!!

    注:由于所有点节点都是在同一个电脑上或在同一个局域网内的,节点之间的数据同步速度是非常快的,一般在10ms内就能同步完成,如果是跨区域的、或是在不同的数据中心的,会受物理条件的影响,同频时间可能会延时长一点!! 

     

     

    十一、MongoDB数据库-模型设计

    1、什么是数据模型?

    数据模型是一组由符号、文本组成的集合,用以准确表达信息,达到有效交流、沟通的目的。

     

    2、数据模型的三要素:

    实体、属性、关系

    基础的建模实际上就是对关系的各种表达:1:1 (一对一),1 :N (一对多),M :N (多对多);

    而在MongoDB的文档中基本上都可以用内嵌方式、数据方式来完成这些关系的表述,就不用像传统的关系型数据库去做分表存储啦!而且:MongoDB也可以进行分集合(表)存储的哦!!!;

    // 可以用对象、数组来处理一对多 或 多对多的关系
    {
        "username": "沐枫",
        "sex": "男",
        "job": "Web全栈",
        "image": {
            "live": "https:www.xxx.com/update/xxx.jpg",
            "travel": "https:www.xxx.com/update/xxx.jpg",
            "working": "https:www.xxx.com/update/xxx.jpg"
        },
        "addresses": [
            {"type": "住址"},
            {"type": "公司"},
            {"type": "老家"}
        ],
        "hobbys": [
            {"name": "打球"},
            {"name": "看书"},
            {"name": "上网"},
            {"name": "旅游"}
        ]
    }

    上面这种处理方式虽然好用,但是 例如:当hobby子文档数据量很多时,数据就会很冗余,好的是MongoDB从3.2版开始也可以进行分集合(表),将hobby文档抽离成一个独立的集合user_hobby,然后进行关联查询!

    // users集合  把原来的users集合中的hobbys字段抽离到独立的user_hobby集合中
    {
        "username": "沐枫",
        "sex": "男",
        "job": "Web全栈",
        "image": {
            "live": "https:www.xxx.com/update/xxx.jpg",
            "travel": "https:www.xxx.com/update/xxx.jpg",
            "working": "https:www.xxx.com/update/xxx.jpg"
        },
        "addresses": [
            {"type": "住址"},
            {"type": "公司"},
            {"type": "老家"}
        ],
        "hobbys": [1, 2, 3, 4]
    }
    
    
    
    // 新抽离出来的user_hobby集合
    {
        {hobby_id": 1, "name": "打球"},
        {hobby_id": 2, "name": "看书"},
        {hobby_id": 3, "name": "上网"},
        {hobby_id": 4, "name": "旅游"}
    }

    通过引用方式 aggregate聚合框架中的 $lookup操作符 来进行关联查询

    例如:users集合 和 user_hobby集合 将这两个集合进行关联查询

    // users集合关联user_hobby集合
    db.users.aggregate([
        {
            $lookup:
                {
                    from: "user_hobby",    //目标关联集合
                    localField: "hobbys",   //当前集合要关联的字段
                    foreignField: "hobby_id",  //目标集合要关联的字段
                    as: "new_hobby"  //查询后返回数据存放的字段名(这是动态生成的,在原来的users集合中是不存在的)
                }
        },
        {
            // ... 如果还有更多的集合需要关联查询,还可以继续关联查询下去。。。!
        }
    ])
    

     

    3、什么时候才应该使用引用方式(拆分集合(表)):

    • 当内嵌文档(子文档)太大时,如数量很多 或 占用空间超过16MB时(目前最大限度16MB);
    • 当内嵌文档 或 数组等元素会频繁更新修改时;
    • 当内嵌数组中的元素数量是未知的(后期可以会持续增加,没有封顶)时;

     

    4、MongoDB 引用是有限制的: 

    • MongoDB 对使用引用的集合之间并无主外键检查;
    • MongoDB 使用聚合框架的 $lookup 来模仿关联查询;
    • $lookup 只支持 left outer join
    • $lookup 的关联目标(from)不能是分片集合(表);

    数据模型的三层深度:

    概念模型,逻辑模型,物理模型

    传统数据库模型设计:从概念到逻辑到物理,它们之间其实就是从概念模型 到 物理模型 的一个逐步细化的过程!

    项目 概念模型 CDM 逻辑模型 LDM 物理模型 PDM
    目的 描述业务系统要管理的对 象 基于概念模型,详细列出 所有实体、实体的属性及 关系 根据逻辑模型,结合数据库 的物理结构,设计具体的表 结构,字段列表及主外键
    特点 用概念名词来描述现实中 的实体及业务规则,如 “联系人” 基于业务的描述 和数据库无关 技术实现细节 和具体的数据库类型相关
    主要使用者 用户 需求分析师 需求分析师 架构师及开发者 开发者 DBA

     

    5、MongoDB 文档模型设计的三个误区 :

    1. 不需要模型设计
    2. MongoDB 应该用一个超级大文档来组织所有数据
    3. MongoDB 不支持关联或者事务

    所以严格来讲,MongoDB 同样需要概念/逻辑建模的,文档模型设计的物理层结构可以和逻辑层类似,可以省略物理建模的具体过程。

    关系模型 VS 文档模型:

    项目 关系数据库 JSON 文档模型
    模型设计层次

    概念模型

    逻辑模型

    物理模型

    概念模型

    逻辑模型

    模型实体 集合
    模型属性 字段
    模型关系 关联关系,主外键 内嵌数组,引用字段

     

     

    十二、MongoDB数据的操作:(和关系型数据库一样,就是增、删、查、改)


     1、插入数据:insert()、insertOne()、insertMany()

    语法:

    db.<集合>.insertOne(<JSON对象>)

    db.<集合>.insertMany([<JSON 1>,<JSON 2>,<JSON 3>,...<JSON n>])

    注:插入数据时不需要专门去创建集合(表),因为插入数据时会自动创建集合!!

    • 插入数据:这里以student集合【学生表】为例!
    db.student.insert({"name": "muguilin", "age": 28, "sex": "男", job: "Web前端"});
    
    
    // 插入1条数据
    db.student.insertOne({"name": "muguilin", "age": 28, "sex": "男", job: "Web前端"});
    
    
    // 插入多条数据
    db.student.insertMany([
        {"name": "zhangsan", "age": 32, "sex": "男", job: "JAVA"},
        {"name": "lisi", "age": 28, "sex": "女", job: "PHP"},
        {"name": "wanger", "age": 16, "sex": "男", job: "Web前端"},
    ]);

     

    2、查找数据:find()、findOne()

    语法:

    db.<集合>.find(<查询条件>)

    find()还支持合用 field.sub_field 的形式查询子文档

    • 查找数据,如果find()中没有参数,那么将列出这个集合中的所有文档:注:find()返回的是游标
    db.student.find()
    
    //相当于下面关系数据库中的语法:
    select * from student
    
    // 在查询返回的结果后面加上.prettys()方法可以让显示效果更友好!
    db.student.find().pretty()
    
    
    // 查询第一条数据
    db.student.findOne()
    相当于:selecttop 1 * from student;
    或者是:db.student.find().limit(1);
    • 指定查询返回的字段 (例如:查询学生集合(表)中所有的女同学,不显示id,只显示名字 和 年龄  <字段名:0不显示,1显示>,或者:<字段名:false不显示,true显示>)
    db.student.find({sex: "女"}, {_id: 0, name: 1, age: 1})
    // 相当于:select name, age from student where sex = '女';
    
    或者:1 === true, 0 === false
    db.student.find({sex: "女"}, {_id: false, name: true, age: true})
    • 子文档查询
    db.student.find({"score.shuxue": 60 });
    
    // 子文档查询
    db.student.find({"score": {"shuxue": 60 }});
    
    // 多个子文档查询 $elemMatch 表示必须是同一个子对象满足多个条件
    db.student.find({"score": {$elemMatch: {"yuwen": 80, "shuxue": 60, "yinyu": 70 });
    

    条件查询:

    • 精确条件查询:
    db.student.find({"uid":"u10010"});
    
    或:
    
    db.student.find({"name":"沐枫"});
    
    // 相当于: select * from student where name = "沐枫";
    • 模糊条件查询:
    // 大于查询
    db.student.find({"score": {$gt: 60}})
    //相当于:select * from student where score > 60;
    
    
    // 小于查询
    db.student.find({"score": {$lt: 60}})
    // 相当于:select * from student where score < 60;
    
    // 大于等于查询
    db.student.find({"score": {$gte: 80}})
    // 相当于:select * from student where score >= 80;
    
    
    // 小于等于查询
    db.student.find({"score": {$lte: 80}})
    // 相当于:select * from student where score <= 80;
    
    
    // 正则表达式查询(查找名字中以 “沐” 开头的记录)
    db.student.find({"name": /^沐/g})
    // 相当于:select * from student where name like '沐%';
    
    
    // 正则表达式查询(查找名字中包含 “沐” 的记录)
    db.student.find({"name": /沐/g})
    // 相当于:select * from student where name like '%沐%';
    • 条件查询对照:(MongoDB 与 传统数据库 比对) 
    SQL(MySql、SqlServer) MQL(MongoDB)
    a = 1 等于 { a : 1} 等于
    a <> 1 不等于 { a : { $ne : 1 }} 不等于 $ne:不存在 或 存在 但 不等于
    a > 1 大于 { a : { $gt : 1 }} 大于 $gt:存在 并 大于
    a >= 1 大于等于 { a : { $gte : 1 }} 大于等于 $gte:存在 并 大于等于
    a < 1 小于 { a : { $lt : 1 }} 小于 $lt:存在 并 小于
    a <= 1 小于等于 { a : { $lte : 1 } } 小于等于 $lte:存在 并 小于等于

     

    逻辑查询:

    • 多条件查询
    // 查询 age >= 18 并且 age <= 26 
    db.student.find({age: {$gte: 18, $lte: 26}});
    • 逻辑与:$and
    db.student.find({"score": 80, "age": 18})
    // 相当于:select * from student where score = 80 and age = 18;
    
    // 另一种$and形式
    db.student.find({$and:[{"score":60 , "age":12}, {"score":80 , "age":15}]})
    • 逻辑或:$or (只需满足1个条件),查找所有年龄是9岁,或者11岁的学生
    db.student.find({$or: [{"age": 18}, {"age": 25}]})
    // 相当于:select * from student where age = 18 or age = 25;
    • 查询逻辑对照:(MongoDB 与 传统数据库 比对) 
    SQL(MySql、SqlServer) MQL(MongoDB)
    a = 1 AND b = 1 并且 { a : 1,b : 1 }  或者是 { $and : [ { a : 1 }, { b :1 } ] } 并且 $and:匹配所有指定条件
    a =1 OR b = 1 { $or : [ { a : 1 } , { b : 1 } ] } 或 $or:匹配指定的2个 或 多个条件中的1个
    a IS NULL 不存在 { a : { $exists : false } } 不存在
    a IN (1,2,3) 存在 { a : { $in: [1, 2, 3] } }

    存在 $in:存在 并 并在指定的数组中

    不存在 $nin:不存在 或 不在指定的数组中

     

    聚合查询:

    MongoDB聚合框架(Aggregation Framework)是一个计算框架,它可以:

    1. 可作用在一个 或  几个集合上
    2. 对集合中的数据进行一系列的运算
    3. 可将数据转化为所期望数据形式,如(数学计算,统计,类型,格式处理等)

    对效果而言,聚合查询相录于传统SQL查询中的,ORDER BY,GROUP BY,LIMIT,LEFT OUTER JOIN,AS等!

    • 聚合查询对照:(MongoDB 与 传统数据库 比对) 
    步骤 作用

    SQL等价运算符

    $match 过滤 WhERE
    $project 投影

    AS

    $sort 排序 ORDER BY
    $group 分组 GROUP BY
    $skip 结果限制 SKIP
    $limit 结果限制 LIMIT
    $lookup 左外连接(多表操作) LEFT OUTER JOIN
    $graphLookup 图搜索 N/A
    $facet 分面搜索 N/A
    $bucket 分面搜索 N/A
    $unwind 展开数组 N/A

     

    • 升降排序查找:(1 升序, -1 降序)
    // 升序
    db.student.find().sort({"age": 1});
    
    // 降序
    db.student.find().sort({"age": -1});
    • 查询前 10 条数据
    db.student.find().limit(10);
    // 相当于:selecttop 10 * from student;
    • 查询第 10 条以后的数据
    db.student.find().skip(10);
    // 相当于:select * from student where id not in (selecttop 10 * from student);
    
    • 查询 10 到 20 之间的数据(这就是项目中常见的列表分页查询)
    db.student.find().limit(20).skip(10);
    
    /*
    * 列表分页
    * limit:就是 pageSize
    * skip :就是第几页 * pageSize
    */
    • 查询某个结果集的记录条数(统计数量)
    db.student.find({age: {$gte: 18}}).count();
    // 相当于:select count(*) from student where age >= 18;
    
    
    // 如果要返回限制之后的记录数量,要使用 count(true)或者 count(非 0)
    db.student.find().limit(20).skip(10).count(true);
    • 展开数据查询:查询某个学生各个学科的成绩
    db.student.aggregate([{$unwind: '$score'}])
    • 查询结果限制: 例如:查询学生集合(表)中的所有女生的姓名和年龄!
    db.student.aggregate([
    
        {$match: "sex": "女"},    // 只取性别为女性的
    
        {$skip: 100},    // 跳过100条
    
        {$limit: 30},    // 只取30条
        
        // 只返回姓名 和 年龄这两个字段
        {$project: {
            '姓名': 'name',
            '年龄': 'age'
        }}
    ])

    explain查询:

    explain 是非常有用的工具,会帮助你获得查询方面诸多有用的信息。只要对游标调用 该方法,就可以得到查询细节。explain 会返回一个文档,而不是游标本身。

    // 查询时加上explain() 方法会返回查询使用的索引情况,耗时和扫描文档数的统计信息
    db.student.find({name:"沐枫"}).explain()
    
    
    // 在explain() 方法中加上"executionStats"参数 可看查 查询具体的执行时间
    db.student.find({name:"沐枫"}).explain("executionStats")

     


    3、修改数据:update()

    语法:

    db.<集合>.update(<查询条件>,<更新字段>)

    db.<集合>.updateOne(<查询条件>,<更新字段>) 表示无论条件匹配多少记录,始终只更新第1条记录

    db.<集合>.updateMany([<查询条件>,<更新字段>]) 表示 条件匹配多少条 就 更新多少条

    注:在修改(更新)时,如果要更新的字段名存在 则更新数据,如果不存在 则创建并写入数据!!

    注:update(),updateOne(),updateMany() 方法要求更新条件部分必须具有以下参数之一,否则就报错!! 

    参数 说明
    $set 增加
    $unset 删除
    $push 增加一个对象到数组底部
    $pushAll 增加多个对象到数组底部

    $pop

    从数组底部删除一个对象
    $pull 如果匹配到指定的值,从数组中删除相应的对象
    $pullAll 如果匹配任意值,从数组中删除相应的对象
    $addToSet 如果不存在就增加一个值到数组

     

    • 修改名字叫做小明的,把年龄更改为16岁:
    db.student.update({"name":"小明"},{$set:{"age":16}});
    • 查找数学成绩是70,把年龄更改为33岁:
    db.student.update({"score.shuxue":70},{$set:{"age":33}});
    • 更改所有匹配项【默认情况下,update()方法是更新单个文档。 要更新多个文档,请使用开启update()方法中的multi选项】
    db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true});
    • 完整替换,不出现$set关键字了:
    db.student.update({"name":"小明"},{"name":"大明","age":16});

     

    4、删除数据:remove() 

    语法:

    db.<集合>.remove(<查询条件>)

    注:remove() 命令需要配合查询条件使用,只要匹配到的文档就会被删除!!

    • 删除实例:
    // 指定删除 名字等于 小明的记录
    db.student.remove({"name":"小明"})
    
    // 删除 数学成绩 小于 60 以下的记录
    db.student.remove({"score.shuxue": {$lt: 60 })
    
    // 删除 student集合中所有的记录!!!
    db.student.remove({})
    
    // 语法错误
    db.student.remove()
    • 默认情况下,remove()方法将删除所有符合删除条件的文档。 使用开启justOne选项将删除操作限制为仅匹配文档之一。
    db.student.remove({"name":"小明"}, {justOne: true});

     

    5、删除集合:drop()

    语法:

    db.<集合>.drop()

    注:删除后集合中的所以文档、以及相关的索引等都会被删除!!

    // 删除学生集合(删除学生表)
    db.student.drop()

     

    6、索引:

    索引是对数据库集合(表)中一列 或 多列的数据进行排序的一种结构,它可以让我们查询数据库变得更快(尤其是在数据量大的情况下)。

    注意:

    随着集合的增长,需要针对查询中大量的排序做索引。如果没有对索引的键调用 sort, MongoDB 需要将所有数据提取到内存并排序。因此在做无索引排序时,如果数据量过大以 致无法在内存中进行排序,此时 MongoDB 将会报错。

    • 创建索引 (1 升序, -1 降序)
    db.student.ensureIndex({"name":1})
    
    // 创建索引 并 指定索引名称
    db.student.ensureIndex({"name":1},{"name":"studentIndex"}) 
    • 查看当前集合索引
    db.student.getIndexes()
    • 删除索引
    db.student.dropIndex({"name":1})
    • 唯一索引(值不能重复,保证维一性,一般用xxxID)
    db.student.ensureIndex({"sid":1},{"unique":true})
    • 复合索引(多个索引列)
    db.student.ensureIndex({"name":1, "age":-1})

     

     

    十三、在Node.js中使用MongoDB数据库

    Node.js 和 MongoDB 可以说是黄金搭配,再加上它们各自都有比较成熟的官方提供的 和 第三方提供相关框架,可以在各种复杂项目场景中使用啦!!

    1、Node.js框架:

    Express :快速,简单,极简的Node.js Web框架

    Koa :基于Node.js 平台的下一代 web 开发框架(由 Express 幕后的原班人马打造)

    Egg :为建造而生Node.js 和Koa更好的企业框架和应用程序为企业级框架和应用而生

     

    2、MongbDB驱动:

    MongoDB Node.JS Driver :适用于MongoDB的下一代Node.js 驱动程序

    Mongoose :适用于Node.js的优雅MongoDB对象建模

    展开全文
  • CTEX套装下载安装

    万次阅读 2018-05-08 18:34:33
    CTEX套装下载安装1. 背景介绍说道CTEX自然联想到LaTex先看看两者的区别01. TEXTEX是斯坦福大学的教授Donald E.Knuth开发的一个功能强大的幕后排版系统。他当时在撰写名为The Art of Computer Programming的书,由于...

    CTEX套装下载安装

    1. 背景介绍

    说道CTEX自然联想到LaTex先看看两者的区别

    01. TEX

    TEX是斯坦福大学的教授Donald E.Knuth开发的一个功能强大的幕后排版系统。他当时在撰写名为The Art of Computer Programming的书,由于出版商把他书中的数学式子排版得很难看,他决定推迟出版,自行研发一套排版系统进行排版。这个系统就是TEX系统。
    简单说:
    TEX一种电子排版系统, 由 Pascal 语言写成. 特点: 免费、输出质量高、擅长科技排版、有点像编程.

    02. LaTeX

    TEX是很低阶的排版语言,对于绝大多数人来说,学起来会很吃力,而且排版工作也会变得相当繁复,难以被更多人使用,效率也不是很高。所以,一些经常用到的功能,如果我们事先定义好,到要用的时候只引用一小段代码就可以实现一个相对复杂的功能,那不仅提高了排版效率,而且版面也会清晰很多。这种事先定义好的功能,叫做宏集(macro)。LaTeX就是TEX的众多宏集之一,是由Leslie Lamport编写的。编写的目的是使版面设置内容和文档的具体内容尽可能分离,让写文档的人更加专注于文档的撰写,而少花些心思在排版上。所以,LaTeX从本质上讲,就是TEX排版系统的一个宏集,将一些常用到的功能整合为文档类型中的设置,简化了TEX排版的工作量及难度。TEX的宏集有很多很多,LaTeX是其中比较实用的一个。
    简单说:
    LATEX 目前使用最广泛的 TEX 宏集. 每一个 LATEX命令实际上最后都会被转换解释成几个甚至上百个TEX命令.

    03. CTEX

    CTEX是利用TEX排版系统的CTEX中文套装的简称。它集成了编辑器 、WinEdt和 PostScript处理软件 Ghostscript 和 GSview 等主要工具。 CTeX中文套装在 MiKTeX的基础上增加了对中文的完整支持。 CTeX中文套装支持 CCT 和 CJK 两种中文 TeX处理方式。
    一般用windows操作系统的人会选择CTEX中的WinEdt软件作为编写LaTeX文档的工具,因为它里面会将latex命令改变颜色,并且将多种命令都集成到图形界面中,又简化了排版操作
    简单说:
    CTEX 国内致力于TEX 推广的网站:http://www.ctex.org/. 该网站提供了 CTEX中文套装, 这个安装程序把MiKTEX(TEX 在 Windows 操作系统上的实现版本) 和一些相关工具(如 WinEdt、GSview 等) 打包在一起, 同时对中文接口进行了配置, 以实现对中文文本的编辑.


    2. 获取安装CTEX

    0.1 CTEX安装包获取

    http://www.ctex.org/HomePage

    打开链接如下图所示:

    这里写图片描述

    0.2 点击下载中心进行下载

    这里写图片描述

    0.3 下载结果

    这里写图片描述

    0.4 安装

    点击exe文件直接安装到自定义目录一路默认,按部就班(默认点下去就ok啦)下去就行啦。

    展开全文
  • sublime text 3下载安装详细教程

    万次阅读 多人点赞 2017-12-06 10:20:41
    portable version”下载下来为“Sublime Text Build 3083 x64.zip”编辑器的包,解压后无需安装就能运行,直接创建桌面快捷键就好 二、双击桌面“Sublime Text 3”快捷图标,打开程序,就可...

          一、下载:打开官网下载链接http://www.sublimetext.com/3,下载Sublime Text 3 

          portable version”下载下来为“Sublime Text Build 3083 x64.zip”编辑器的包,解压后无需安装就能运行,直接创建桌面快捷键就好

          二、双击桌面“Sublime Text 3”快捷图标,打开程序,就可以见到“Sublime Tex的庐山真面目了。

         打开侧边栏:View -> Side Bar -> Show Side Bar (Ctrl+B,Ctrl+K)

         打开上边栏:快捷键Ctrl + Shift + P进入管理器,输入View,选择Toogle Tabs

         三、设置字体及字体大小

          点菜单“Preferences--->Setting - User”,打开“Preferences.sublime-settings”。

     

          如下图添加所需代码,根据自己的喜好进行设置。设置字体用"font_face":"字体名称",设置字体大小用"font_size":"字体大小",注意它们之间需要用逗号隔开。

     

    四、安装插件

           1、安装Package Control(更新

          Package Control为插件管理包,所以我们首先要安装它。有了它,我们就可以很方便的浏览、安装和卸载Sublime Text中的插件。

          Package Control的网页https://packagecontrol.io/(已失效),请自行安装

        推荐一篇http://www.php.cn/tool/sublime/413320.html(因为本人已经不用sublime text 3,请各位自行考虑,经验是需要自己拿时间来时间的)

     

    2、ConvertToUTF8 插件安装

          a)功能说明:ConvertToUTF8 能将除UTF8编码之外的其他编码文件在 Sublime Text 中转换成UTF8编码,在打开文件的时候一开始会显示乱码,然后一刹那就自动显示出正常的字体,当然,在保存文件之后原文件的编码格式不会改变。

          b)安装方法一:快捷键 Ctrl+Shift+p ,打开 “Command Palette” 悬浮对话框,在顶部输入 “install”, 然后下选点击 “Package Control:Install Package”。

     

          在出现的悬浮对话框中输入 “convert”, 然后点选下面的 “ConvertToUTF8” 插件,就会自动开始安装,请耐心等待。

     

           当插件安装成功后,Sublime Text 3 编辑器底端的状态栏会有安装成功的提示。

     

     

          c)安装方法二:你还可以下载完整的插件包后解压,放入 C:\Users\userName\AppData\Roaming\Sublime Text 3\Packages 目录下,以达到安装插件的目的。

      如何找到 Packages 目录?一个快捷的方法是:双击打开你的 “Sublime Text 3”,点菜单 “Preferences--->Browse Packages...”。

     

          它会直接打开插件包存放的目录 “Packages”。然后你就可以把下载后解压好的插件包复制到这个 Packages 目录下。

          当然,如果你熟悉 git,你还可以用 git 从插件的 GitHub 库直接克隆插件包到 Packages 目录下。

     

     

    3、BracketHighlighter 插件

          功能说明:高亮显示匹配的括号、引号和标签。

          安装方法:

         1、Ctrl+Shift+P面板,安装插件BracketHighlighter

         2、按preferences–>package settings–>Bracket highlighter–>把Bracket settings-Default内容复制到Bracket settings-User后,Ctrl+F 查询到“bracket_styles”,把{}中屏蔽的//都去掉,在这里解释一下,color表示的设置选中部分的颜色,把该值改为以brackethighlighter开头style则全部改成hightlight,注意,"icon":“”后面的逗号一定加上!

     

     

    4、LESS 插件

          功能说明:LESS语法高亮显示。

          安装方法:Ctrl+Shift+P面板,安装插件

         

     

    5、sublime-less2css 插件

          功能说明:将less文件编译成css文件。

          安装方法:Ctrl+Shift+P面板,安装插件BracketHighlighter

          插件地址:https://github.com/facelessuser/BracketHighlighter/tree/BH2ST3

          辅助工具:安装后从 https://github.com/duncansmart/less.js-windows 下载 less.js-windows,然后配置 less.js-windows 的环境变量。

     

    6、Emmet 插件

          功能说明:Emmet的前身是大名鼎鼎的Zen codin。前端开发必备,HTML、CSS代码快速编写神器。

          安装方法:Ctrl+Shift+P面板,安装插件

          使用方法:默认快捷键 Tab/Ctrl+E

          插件地址:https://github.com/sergeche/emmet-sublime

          辅助工具:PyV8 下载地址: https://github.com/emmetio/pyv8-binaries

          注意:Emmet 插件需要 PyV8 插件的支持,所以在安装 Emmet 时,会自动安装 PyV8 插件,如果安装后 Emmet 不能正常保用,很有可能是因为 PyV8 没有安装完全,Sublime Text 2 和 3 容易出现这个问题。你可以删除它,然后手动下载,采用方法二安装 PyV8 插件。

     

          使用方法示例:书写代码 ul#nav>li.item$*8>a{Item $}

     

          然后把光标定在这行代码的最后面,按 Tab 键,就会自动生成:

          <ul id="nav">

                  <li class="item1"><a href="">Item 1</a></li>

                 <li class="item2"><a href="">Item 2</a></li>

                 <li class="item3"><a href="">Item 3</a></li>

                 <li class="item4"><a href="">Item 4</a></li>

                 <li class="item5"><a href="">Item 5</a></li>

                 <li class="item6"><a href="">Item 6</a></li>

                 <li class="item7"><a href="">Item 7</a></li>

                 <li class="item8"><a href="">Item 8</a></li>

        </ul>

     

     

          更多更详细的使用方法,请查阅 Emmet 官网:http://docs.emmet.io/

     

    7、JsFormat 插件

          功能说明:JavaScript代码格式化。

          使用方法:在打开的JavaScript文件里点右键,选择JsFormat。

          插件地址:https://github.com/jdc0589/jsformat

     

    8、ColorHighlighter 插件

          功能说明:显示所选颜色值的颜色,并集成了ColorPicker

          插件地址:https://github.com/Monnoroch/ColorHighlighter

     

          在16进制的颜色值上点右键,选择“Choose color”,会弹性颜色拾色器,在需要的色块上单击。

     

     

          看看效果,颜色值和显示颜色都相应做了改变。

     

    9、Compact Expand CSS Command 插件

          功能说明:使CSS属性展开及收缩,格式化CSS代码。

          使用方法:按 Ctrl+Alt+[ 收缩CSS代码为一行显示,按 Ctrl+Alt+] 展开CSS代码为多行显示。

          插件地址:https://gist.github.com/vitaLee/2863474 或者:https://github.com/TooBug/CompactExpandCss

     

          快捷键 Ctrl+Alt+[ 收缩CSS代码为效果: 

     

          快捷键 Ctrl+Alt+] 展开CSS代码为多行显示效果:

     

    10、SublimeTmpl 插件

          功能说明:快速生成文件模板。

          使用方法:SublimeTmpl默认的快捷键如下,如果快捷键设置冲突可能无效。

                        Ctrl+Alt+h              新建 html 文件

                        Ctrl+Alt+j               新建 javascript 文件

                        Ctrl+Alt+c               新建 css 文件

                        Ctrl+Alt+p              新建 php 文件

                        Ctrl+Alt+r               新建 ruby 文件

                        Ctrl+Alt+Shift+p     新建 python 文件

          插件地址:https://github.com/kairyou/SublimeTmpl

     

          下图为按快捷键 Ctrl+Alt+h 新建的一个 html 文件。

     

          相应的模板为tmpl格式的文件,它们保存在C:\Users\ usersName\AppData\Roaming\Sublime Text 3\Packages\SublimeTmpl\templates下。

     

          当然你可以根据自己的喜好来更改模板格式。例如把“html.tmpl”改为早期的html标准格式后保存。

     

          现在按快捷键 Ctrl+Alt+H,新建一个 html 文件,其格式就和更改后模板格式完全一样了。如下图:

     

          新增语言:你还可以增加模板文件夹中没有的文件模板,并做相应的设置来使用这一功能。具体可以参考它的中文文档:http://www.fantxi.com/blog/archives/sublime-template-engine-sublimetmpl/

     

    11、Alignment 插件

          功能说明:使代码格式的自动对齐。

          安装方法:Ctrl+Shift+P面板,安装插件

          使用方法:快捷键Ctrl+Alt+A,可能与QQ截图冲突,二者中的一个要重置快捷键。

          插件地址:https://github.com/kevinsperrine/sublime_alignment

     

    12、AutoFileName 插件

          功能说明:自动补全文件(目录)名。

          插件地址:https://github.com/BoundInCode/AutoFileName

     

          安装好后就可以来测试如何使用AutoFileName,先以<link>css档案来示范,当输入href=””的同时,Sublime Text就会将现在编辑档案的路径为中心,判断该路径内的所有档案。

          a)以这个档案为范本它会去抓取跟abc.html在同一层的档案列表。

     

          像我们这次要link的是在css资料夹内的auto.css,所以我们直接衔接打上css/,就会跑出css资料夹内的档案,整个用法以此类推

     

          b)像是<img src=””>的部分也是一样的方式,没什么困难了,弄懂一下路径就好了。

     

         c)再来看看是css档中要用url,也是用同样方式,只不过因为要连到上一层的images资料夹内的arrow.png,所以就前面打..(上层),依序去选择路径即可。

     

    13、DocBlockr 插件

          功能说明:快速生成JavaScript (including ES6), PHP, ActionScript, Haxe, CoffeeScript, TypeScript, Java, Groovy, Objective C, C, C++ and Rust语言函数注释。

          使用方法:在函数上面输入/** ,然后按 Tab 就会自动生成注释。

          插件地址:https://github.com/spadgos/sublime-jsdocs

     

          在函数上面输入/** ,然后按Tab 就会自动生成注释。

     

    14、SublimeCodeIntel 插件

          功能说明:智能提示。

          插件地址:https://github.com/SublimeCodeIntel/SublimeCodeIntel

     

    15、HTML-CSS-JS Prettify 插件

          功能说明:HTML、CSS、JS格式化。

          插件地址:https://github.com/victorporof/Sublime-HTMLPrettify

          安装方法:安裝这个套件前必须先安裝node.js,指定 node.exe 的执行档所在位置。进而安装HTML-CSS-JS Prettify。

          使用方法一:View -> Show console 或者使用快捷键(Ctrl + `),在命令列的地方輸入:view.run_command("htmlprettify")然后按下Enter。

     

          使用方法二:默认快捷键:Ctrl+Shift+H

                           你也可以自行设置快捷键,菜单 “Preferences---> Key Bindings – User” 里新增:

    { 
        "keys": ["ctrl+shift+o"], 
        "command": "htmlprettify" 
    }

     

           完成后保存,以上代码设定执行此插件的快捷键是:Ctrl+Shfit+O,自己设定的话就要测试一下,不要跟其他快捷键冲突。

     

          格式化前:

     

          格式化后:

     

    16、SideBarEnhancements 插件

          功能说明:侧栏菜单扩充功能。

          插件地址:https://github.com/titoBouzout/SideBarEnhancements/tree/st3

     

    17、View In Browser 插件

          功能说明:Sublime Text保存后网页自动同步更新。

          插件地址:https://github.com/adampresley/sublime-view-in-browser

          使用方法:在打开的文档任一处点右键,选择“View In Browser”,就会用默认的浏览器自动打开该文件。

     

          如果你电脑装有多个浏览器,你想换其它的作为此操作的默认浏览器,你可以按以下方法设置:

     

          打开“View In Browser.sublime-settings”,写入以下代码:

    {
        "browser": "chrome64"
    }

     

          这样你就把它默认设置为“Chrome”浏览器了,当然你还可以改成“Firefox”、“Safari”等等,前提是你的电脑事先已安装好了这些浏览器。

     

    18、LiveReload 插件

          功能说明:调试网页实时自动更新。

          使用说明:快捷键 Ctr+Alt+V

          插件地址:https://github.com/dz0ny/LiveReload-sublimetext2

     

          同时Chrome浏览器也要安装LiveReload 的扩展插件。

     

    19、TortoiseSVN 插件(win下需要安装有TortoiseSVN客户端支持)

          功能说明:版本控制工具。

          插件地址:https://github.com/dexbol/sublime-TortoiseSVN

     

    20、Theme-Soda 插件

          功能说明:最受欢迎的 Sublime Text 主题之一。

          插件地址:https://github.com/buymeasoda/soda-theme

          安装完成后,点菜单 Preferences--->Settings - User,根据需要的主题效果,添加如下代码。

          Soda 亮色主题请添加:

    {
        "soda_classic_tabs": true,
        "theme": "Soda Light 3.sublime-theme",
    }

         

          Soda 暗色主题请添加:

    {
        "soda_classic_tabs": true,
        "theme": "Soda Dark 3.sublime-theme",
    }

     

     

          要达到图中的效果,你还需要下载与之搭配的 color scheme。下载地址:http://buymeasoda.github.com/soda-theme/extras/colour-schemes.zip,如果你喜欢 Soda Dark 和 Monokai,我建议你使用 Monokai Extended。这个 color scheme 是 Monokai Soda 的增强,再配合 Markdown Extended ,将大大改善 Markdown 的语法高亮。

     

          如果加代码 "soda_classic_tabs":true,文件标签页形状会如下显示:

     

          如果不添加此行代码,文件标签页形状会如下显示:

     

    21、Theme-Flatland 插件

          功能说明:最受欢迎的 Sublime Text 主题之一。

          插件地址:https://github.com/thinkpixellab/flatland

     

    22、Theme-Nexus 插件

          功能说明:最受欢迎的 Sublime Text 主题之一。

          插件地址:https://github.com/EleazarCrusader/nexus-theme

     

     

    五、插件列表

        快捷键 Ctrl+Shift+P,在对话框中输入“list”,选择“Package Control:List Packages”。

          会列出所有已安装的插件。这样可以很方便地了解自己已经安装了哪些插件。

     

    六、移除插件

          有时候我们需要移除自己不想要的插件,具体操作如下:快捷键 Ctrl+Shift+P,在对话框中输入“remove”,选择“Package Control: Remove Packages”。

     

          然后在出现的插件列表中点选你要移除的插件。

     

    七、Sublime Text 的窗口操作

    1、分屏

          Sublime Text有多种分屏形式,让我来具体地看一看。菜单 “View-àLayout”就可以选择你的分屏样式。

     

          对应的快捷键与分屏情况如下:

          Alt+Shift+1       Single             独屏

          Alt+Shift+2       Columns:2      纵向二栏分屏

          Alt+Shift+3       Columns:3      纵向三栏分屏

          Alt+Shift+4       Columns:4      纵向四栏分屏

     

          Alt+Shift+8       Rows:2          横向二栏分屏

          Alt+Shift+9       Rows:3          横向三栏分屏

     

          Alt+Shift+5       Grid              四格式分屏

     

    2、创建新窗

          快捷键Ctrl+Shift+N 创建一个新窗口。

    转载自:http://www.cnblogs.com/wind128/p/4409422.html

    略有改动

    文章第一版写于 2017-12-06

    文章第二版更新于 2019-3-22

    某些朋友请好好关注一下文章的更新时间,不要随意评论,时代在变,文章的内容总是会落后的,作为一个程序员,你应该懂得。

    恶语伤人六月寒,你不喜欢就别看,好好管住你的手,谢谢!

    展开全文
  • IAR for STM8介绍、下载安装与注册

    万次阅读 多人点赞 2016-10-26 18:01:45
    推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang ...1.EWSTM8系列教程01_IAR介绍、下载安装和注册 2.E...
  • docker下载安装

    万次阅读 多人点赞 2019-07-01 14:40:08
    DockerToolbox-18.09.3.exe ...安装完成后,在桌面上会出现两个图标:一个是命令行形式Docker终端,一个是图形界面的Docker操作工具。 其安装路径下文件如下: 你可通过CMD查看docke...
  • MongoDB下载安装教程

    千次阅读 2018-10-21 13:04:10
    一、MongoDB的下载安装与部署 1、什么是MongoDB? 它是介于关系型数据库和非关系型数据库之间的一种NoSQL数据库,用C++编写,是一款集敏捷性、可伸缩性、扩展性于一身的高性能的面向文档的通用数据库。 2、为什么...
  • 下载安装浏览器插件方法

    千次阅读 2019-04-15 20:53:51
    安装浏览器插件方法如下:以谷歌浏览器、360浏览器等Blink 内核的浏览器为例(火狐等浏览器也可使用)方法一:通过浏览器直接下载:设置->工具->管理扩展->获取更多扩展,找到扩展中心,点击安装即可安装 ...
  • TensorFlow下载安装

    万次阅读 多人点赞 2018-01-05 14:25:43
    选择最新的3.x版本下载安装,本文下载的是3.6.4版本。安装完成后,需要将Python添加到环境变量中。 依次选择:右击 我的电脑/此电脑 –> 属性 –> 高级系统设置 –> 高级选项卡(默认)–> 环境变量 –> 系统...
  • SQL Server 2008 Express 及 SSMS Express 下载安装配置教程

    万次阅读 多人点赞 2018-03-08 23:15:28
    这篇文章主要讲如何一步步从下载安装、配置 SQL Server 2008 Express 和 SMSS 到最后 使用 SMSS 连接本地的数据库服务。
  • Java下载安装错误案例

    万次阅读 2019-02-22 21:34:10
    Java下载安装错误案例 一、下载安装 下载官网网站:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1、点击“Accept License Agreement”(接受许可协议),不服从此协议...
  • Linux下载安装QT

    万次阅读 2019-06-15 16:14:11
    Ubuntu上Qt安装以及配置完整步骤 Qt是一个跨平台的C++图形用户界面库,我们平时所说所使用的Qt,准确的来说是它的GUI编程部分。Qt提供给应用程序开发者建立图形用户界面所需要的功能,并且Qt很容易扩展。基本上,Qt...
  • Eviews10下载安装

    万次阅读 热门讨论 2017-09-21 22:18:48
    新版本的EViews 10还带来了全新的功能和强大的数据接口,支持与云中心连接进行数据的分析操作。 下载链接:http://pan.baidu.com/s/1kV7RZJT 密码:n6ci IHS EViews 10.0 x86|x64 (cracked by Midou)安装
  • 应用中心安装插件的时候最后提示数据下载错误(105)或数据下载错误(102)的问题,搜索了下看见很多站长反馈这个问题! 出现类似的错误主要原因是服务器和应用中心连接出现问题,可以从以下3点去排查: 1、云平台需要...
  • Ubuntu系统下载安装启动Docker

    千次阅读 2018-11-05 15:52:37
    目录一、简介docker仓库二、docker安装docker安装启动三、docker初体验运行第一个docker镜像(hello-world)四、链接[网易云镜像中心](https://c.163yun.com/hub#/m/home/) 一、简介 docker仓库 Docker 是一个开源的...
  • IDEA下载安装与激活

    万次阅读 2018-12-29 11:19:16
    2、IDEA的安装 3、IDEA的激活   1、IDEA的下载 IntelliJ IDEA官网:https://www.jetbrains.com/idea/ (1)打开官网,点击Download  (2)进入到下载页面 选择操作系统(Windows、macOS 、Linux)、 ...
  • NAS安装迅雷远程下载

    千次阅读 2020-07-29 20:45:00
    所以我们可以使用 docker 安装迅雷的远程下载服务,实现迅雷下载。 使用效果如图: 只要三步,让你拥有迅雷速度! 安装 docker 套件 首先需要在你的 DSM 系统中安装 docker 套件。 打开套件...
  • Win7下 Git下载安装

    千次阅读 2018-09-16 17:06:39
    Git 2.19.0下载安装 一、Git下载地址 https://git-scm.com/downloads 根据自己的电脑系统选择下载32位版本或者64位版本 二、安装 1、进入安装页面 2、选择安装位置 3、选择安装组件 一般按上图勾选...
  • VS2015安装教程(带图解+下载地址+超详细)

    万次阅读 多人点赞 2018-07-30 15:55:35
    本文将教给你如何安装 VS2015,如果你还想了解 VS2015 的使用,请猛击:在 VS2015 下运行C语言程序   与此同时,我们还提供了非常优秀的C语言教程。这套教程由C语言中文网站长执笔,将多年的编程经验灌输其中,...
  • ubuntu下大家一般都会通过软件下载中心安装,而软件中心下载的软件一般在/var/cache/apt/archives这个路径下,当然一般软件中心对给你安装好,所以该路径下的文件名是×××.deb的文件。同时普及下安装×××.deb...
  • 苹果开发者证书下载安装

    万次阅读 2014-02-12 10:09:58
    (最好是下载它的完整的向导说明书,是一个PDF,7M多,步骤还是挺详细的。但是这本手册在网上没有见过中文版的说明,所以在这里简单介绍一下。) 这个开发者中心的用户权限分三种类型:Agent,Admin,Developer。 ...
  • phpmyadmin 下载安装、配置

    万次阅读 2017-05-05 15:52:39
    phpmyadmin 下载安装、配置地址:https://www.phpmyadmin.net/点击右上角下载按钮下载得到phpMyAdmin-4.7.0-all-languages.zip解压到C盘根目录下,重命名为phpMyAdmin,进入该文件夹,找到config.sample.inc.php,...
  • ElasticSearch 7.6.2 下载包 及 安装

    千次阅读 2020-04-09 18:17:49
    1、从官方下载中心ElasticSearch Download下载ElasticSearch安装包 有时可能下载速度较慢,可以前往 点击下载 2、安装请参考 https://www.cnblogs.com/hualess/p/11540477.html ...
  • 在android 7.0之前版本更新其实相当简单,只需要使用系统下载器就能够完成下载之后安装,但是在7.0之后android升级安全机制,下载安装受到一些限制。这里我分装成了几个工具方便开发者使用: 创建广播接受者:...
  • 02.1 知识图谱工具 Protege的下载安装与使用

    万次阅读 多人点赞 2019-03-01 11:27:19
    Protege的下载安装与使用 本文是王昊奋老师《知识图谱》系列笔记第2.1篇。 文章目录Protege的下载安装与使用0 相关介绍0.0 Protege相关介绍0.1 Protégé的特点0.2 Protégé的用途1 Protege的下载1.1 准备工作:...
  • EEGLAB工具箱的下载安装

    千次阅读 2019-06-18 11:05:01
    下载安装 官网:https://sccn.ucsd.edu/eeglab/index.php 名字:随便填,研究领域:与脑电有关即可,例如:eeg research 下面三个全部勾选即可 安装: 1、将下载好的eeglab_current.zip解压到matalab的安装...
  • React Native安卓实现更新下载安装

    千次阅读 热门讨论 2018-05-22 10:02:28
    使用ReactNative开发,APP免不了需要更新的功能,iOS直接使用Linking跳转App Store即可,而Android则略显麻烦,需要通过封装Native Modules去调用Android原生DownloadManager来实现下载, Demo下载地址:...
  • QT 5.9.0下载安装及配置教程

    万次阅读 多人点赞 2020-04-18 20:10:42
    今天打算换一个QT安装版本,去官网看了一眼发现变成了在线安装。本来官方下载的就慢,现在更是雪上加霜,现在给大家推荐几种下载方式。 1、国内镜像 中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/ 清华...
  • 正确的解决方法是更改软件中心软件下载点的源地址. 操作方法:系统设置->软件和更新->Ubuntu软件->下载自 点击下载自后会出现许多选项,选择"其他站点"->自动选择最佳服务器即可. 保持网络通畅,...
  • 最新QT下载安装 指南教程

    千次阅读 多人点赞 2020-05-12 16:41:37
    Qt体积很大,有 1GB~3GB,官方下载通道非常慢,相信很多读者会崩溃,所以建议大家使用国内的镜像网站(较快),或者使用迅雷下载(很快)。 作为 Qt 下载教程,本文会同时讲解以上三种下载方式。 Qt 官方下载(非常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 142,542
精华内容 57,016
关键字:

下载中心安装