(一)Mongodb的下载与安装
一、MongoDB的下载:
MongoDB的官网是:http://www.mongodb.org/
MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center/community
可以在官网下载,但是我试了一下特别麻烦,所有找了一个简单的方法,可以在这个地址直接下载zip,http://dl.mongodb.org/dl/win32/x86_64
4以上的版本有公钥密钥的问题,所以下载4以下的版本
二、MongoDB的安装
Windows系统 目前选择 win32/mongodb-win32-x86_64-2008plus-ssl-v3.6-latest-signed.msi
下载 .msi 文件,下载后双击该文件,按操作提示安装即可。
安装过程中,你可以通过点击 "Custom(自定义)" 按钮来设置你的安装目录。
下一步安装 "install mongoDB compass" 不勾选(当然你也可以选择安装它,可能需要更久的安装时间),MongoDB Compass 是一个图形界面管理工具,我们可以在后面自己到官网下载安装,下载地址:https://www.mongodb.com/download-center/compass。
创建数据目录
MongoDB 将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。
可以用命令行创建如下
cd D:\Sql\MongoDB\Server\3.6 md "\data\db"
也可以直接在资源管理器windows下直接创建文件夹
在D:\Sql\MongoDB\Server\3.6下,然后分别建立db,log两个文件夹,至此mongodb下有以下文件夹,
D:\Sql\MongoDB\Server\3.6\bin D:\Sql\MongoDB\Server\3.6\data\db D:\Sql\MongoDB\Server\3.6\data\log
三、命令行下运行 MongoDB 服务器(启动方式1)
为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行
【问题】
mongod : 无法将“mongod”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
【解决】
【必须管理员的模式】打开CMD
PS D:\Sql\MongoDB\Server\3.6\bin> mongod --dbpath D:\Sql\MongoDB\Server\3.6\data\db
表示在27017端口启动成功,浏览器打开 http://localhost:27017/ 显示如下
注意:
mongod --dbpath 命令是创建数据库文件的存放位置,启动mongodb服务时需要先确定数据库文件存放的位置,否则系统不会自动创建,启动会不成功。
mongod --logpath 表示日志文件存放的路径 --logappend 表示以追加的方式写日志文件
在 " bin/mongod.cfg " 文件中也会有 dbPath 和 logPath的配置
另外:
在 bin目录下的 mongod.exe文件,双击会闪出,就是因为没有执行上面的 mongod --dbpath 命令
在 bin目录下的 mongo.exe文件,双击来打开 MongoDB 客户端,进行数据库操作
四、本地客户端连接刚刚搭建的MongoDB服务器
mongo 命令 是连接数据库服务,即连接服务器,可以通过端口进行访问(27017)
我们可以在命令窗口中运行 mongo.exe 命令即可连接上 MongoDB
【问题】
Error: couldn't connect to server 127.0.0.1
【解决】
连接MongoDB之前一定要先执行第三步 命令行运行【MongoDB服务器先启动】,本地才能连接到服务器
创建配置文件
创建一个配置文件。该文件必须设置 systemLog.path 参数,包括一些附加的配置选项更好。
例如,创建一个配置文件位于
D:\Sql\MongoDB\Server\3.6\mongod.cfg
其中指定 systemLog.path 和 storage.dbPath。具体配置内容如下:
systemLog: destination: file path: D:\Sql\MongoDB\Server\3.6\data\log\mongod.log storage: dbPath: D:\Sql\MongoDB\Server\3.6\data\db
五、安装 MongoDB服务并启动(启动方式2)
通过执行mongod.exe,使用--install选项来安装服务,使用--config选项来指定之前创建的配置文件。
D:\Sql\MongoDB\Server\3.6\bin\mongod.exe --config "D:\Sql\MongoDB\Server\3.6\mongod.cfg" --install
要使用备用 dbpath,可以在配置文件(例如:D:\Sql\MongoDB\Server\3.6\mongod.cfg)或命令行中通过 --dbpath 选项指定。
如果需要,您可以安装 mongod.exe 或 mongos.exe 的多个实例的服务。只需要通过使用 --serviceName 和 --serviceDisplayName 指定不同的实例名。只有当存在足够的系统资源和系统的设计需要这么做。
mongod --dbpath=安装路径\data\db --logpath=安装路径\data\log\mongodb.log --install --serviceName "MongoDB"
【问题】
net start MongoDB
MongoDB 服务正在启动 .
MongoDB 服务无法启动。
发生服务特定错误: 100.
【原因1】因为前面的mongod已经启动
【解决1】关掉mongod进程
【原因2】没有正常关闭mongod服务,导致mongod被锁
【解决2】进入db文件夹,删除mongod.lock和storage.bson文件,然后重新启动服务即可,
【结果】
启动MongoDB服务
net start MongoDB
关闭MongoDB服务
net stop MongoDB
移除 MongoDB 服务
D:\Sql\MongoDB\Server\3.6\bin\mongod.exe --remove
命令行下运行 MongoDB 服务器 和 配置 MongoDB 服务 任选一个方式启动就可以。
任选一个操作就好
六、MongoDB 后台管理 Shell
如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo.exe文件,MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):
D:\Sql\MongoDB\Server\3.6\bin>mongo MongoDB shell version v3.6.23-8-gc2609ed3ed connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("7c838f33-6a05-4894-827d-76713c404e4e") } MongoDB server version: 3.6.23-8-gc2609ed3ed
由于它是一个JavaScript shell,您可以运行一些简单的算术运算:
> 2 + 2
4
>
db 命令用于查看当前操作的文档(数据库):
> db
test
>
插入一些简单的记录并查找它:
> db.runoob.insert({x:10})
WriteResult({ "nInserted" : 1 })
> db.runoob.find()
{ "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 }
>
第一个命令将数字 10 插入到 runoob 集合的 x 字段中。
七、操作数据库
到这一步数据库已经成功跑起来了,接下来就是操作一些命令向数据库里面插入数据等并且可以看到自己对数据库的一系列操作的结果了
db.stats() 命令将显示数据库名称,数据库中的集合和文档数量
> db.stats() { "db" : "test", "collections" : 1, "views" : 0, "objects" : 1, "avgObjSize" : 33, "dataSize" : 33, "storageSize" : 16384, "numExtents" : 0, "indexes" : 1, "indexSize" : 16384, "fsUsedSize" : 15998328832, "fsTotalSize" : 43689963520, "ok" : 1 }
db.help()将列出一个命令列表
> 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) - deprecated db.commandHelp(name) returns the help for the command db.copyDatabase(fromdb, todb, fromhost) - deprecated 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 >
八、mongod和mogo的区别
1. 注意 mongod 和 mongo 的区别
前者是启用MongoDB进程(服务端),后者是对MongoDB进行连接操作(客户端)
2. 执行 mongod 需要 配置路径 进行启用,单纯的双击 mongod.exe文件会闪出,正确的是执行mongod --dbpath 命令
3. 在执行mongod命令启用MongoDB进程(服务器)的基础上,再使用mongo 对其进行连接操作,
九、几个概念
来源 MongoDB面试题问题以及参考答案
8.什么是”mongod“
mongod是处理MongoDB系统的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。
9."mongod"参数有什么
传递数据库存储路径,默认是"/data/db"
端口号 默认是 "27017"
10.什么是"mongo"
它是一个命令行工具用于连接一个特定的mongod实例。当我们没有带参数运行mongo命令它将使用默认的端口号和localhost连接