MongoDB 不在开源了,使用 Homebrew 安装只能玩社区版了
使用了大半年的 mongodb ,最近在公司的新项目中应用,在 mac 上安装 mongodb 时发现始终安装不了,一直在报下面这样的错误:
brew install mongodb
升级 brew 也不行,这个 mac 机上从未安装过 mongodb,但从错误信息中提示却是要卸载它,真是醉了。
从2019年9月2日开始 ,homebrew 也从核心仓库 (#43770) 当中移除了mongodb 模块
不过,幸运的是 mongodb 团队还在维护社区版的 homebrew,最后还是从stack overflow 上查找到答案:
为了搞清楚这些是啥意思,查看了 github。
- 在安装社区版前要先执行:brew tap mongodb/brew 这个过程有点久,我装过可能需要30分钟左右。
- 安装最新社区版:brew reinstall mongodb-community
- 启动 mongodb-community 服务:
brew services start mongodb-community ,提示 “service `mongodb-community` already started”,说明服务启动成功
mongodb-community 命令区别 mongodb
- 启动服务:brew services start mongodb-community
- 重启服务: brew services restart mongodb-community
- 停止服务:brew services stop mongodb-community
- 安装某个版本:brew install mongodb-community@x.x.x
- 手动启动服务:mongod --config /usr/local/etc/mongod.conf
文件路径:
-
配置文件:/usr/local/etc/mongod.conf
-
日志目录路径:/usr/local/var/log/mongodb
数据目录路径:/usr/local/var/mongodb
这样 mongodb 服务就安装和启动好了。
将 mongodb 下载到本地,mongodb-osx-ssl-x86_64-4.0.13.tgz 我下载的是这个版本,解压后,新建目录,将解压后的文件存放在里面。
我的目录为:/volumes/code/localhost/node/mongodb/bin
- 创建存储数据库文件
data
在任意盘符根目录下创建一个 data
目录,用来存放数据库文件。 mongodb
会自动把自己安装位置的盘符根目录下的 data
文件夹作为自己的数据存储目录,这里也可以直接在安装位置所在盘符创建,我是在 bin 目录下创建的 data 目录。
新开一个 shell,指定 db 路径:
进入 /volumes/code/localhost/node/mongodb/bin 目录 ,输入 mongod,会看到 :
mongodb starting : pid=942 port=27017 dbpath=/data/db 64-bit
db version v4.2.1
git version: edf6d45851c0b9ee15548f0f847df141764a317e
。。。
说明 db 启动成功了!!
如果 data 目录在其它位置,需要指定 data 目录路径,输入 mongod --dbpath 路径
- 连接数据库 npm run start
在 server.js 中,进行配置:
const mongoose = require('mongoose'); const mongoclient = require('mongodb').mongoclient; // db const dburl = "mongodb://127.0.0.1:27017/local"; mongoclient.connect(dburl, (err, db) => { if (err) { console.log('数据库连接失败!'); return; }; console.log(db); });
在 package.json 中,进行配置:
"scripts": { "server": "node server.js", "start": "nodemon server.js" },
const dburl = "mongodb://127.0.0.1:27017/local";
默认情况下,db 启动成功后,本地会有三个表 admin / config / local
> show dbs admin 0.000gb config 0.000gb local 0.000gb >
- 查看 db 配置信息 npm run start ,成功的启动 服务并连接 db
> web@1.0.0 start /volumes/code/localhost/node/web > nodemon server.js [nodemon] 1.19.4 [nodemon] to restart at any time, enter `rs` [nodemon] watching dir(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node server.js` (node:1009) deprecationwarning: current server discovery and monitoring engine is deprecated, and will be removed in a future version. to use the new server discover and monitoring engine, pass option { useunifiedtopology: true } to the mongoclient constructor. successful! 访问地址为 http://127.0.0.1:3000 mongoclient { _events: [object: null prototype] {}, _eventscount: 0, _maxlisteners: undefined, s: { url: 'mongodb://127.0.0.1:27017/local', options: { servers: [array], casetranslate: true, dbname: 'local', sockettimeoutms: 360000, connecttimeoutms: 30000, retrywrites: true, userecoverytoken: true, readpreference: [readpreference], promiselibrary: [function: promise] }, promiselibrary: [function: promise], dbcache: map {}, sessions: set {}, writeconcern: undefined, namespace: mongodbnamespace { db: 'admin', collection: undefined } }, topology: server { _events: [object: null prototype] { serveropening: [function], serverdescriptionchanged: [function], serverheartbeatstarted: [function], serverheartbeatsucceeded: [function], serverheartbeatfailed: [function], serverclosed: [function], topologyopening: [function], topologyclosed: [function], topologydescriptionchanged: [function], commandstarted: [function], commandsucceeded: [function], commandfailed: [function], joined: [function], left: [function], ping: [function], ha: [function], authenticated: [function], error: [function], timeout: [function], close: [function], parseerror: [function], open: [function], fullsetup: [function], all: [function], reconnect: [function] }, _eventscount: 25, _maxlisteners: infinity, clientinfo: { driver: [object], os: [object], platform: 'node.js v12.11.1, le' }, s: { coretopology: [server], scapabilities: null, clonedoptions: [object], reconnect: true, emiterror: true, poolsize: 5, storeoptions: [object], store: [store], host: '127.0.0.1', port: 27017, options: [object], sessionpool: [serversessionpool], sessions: set {}, promiselibrary: [function: promise] } } }