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

MongoDB 不在开源了,使用 Homebrew 安装只能玩社区版了

程序员文章站 2022-05-18 19:30:52
使用了大半年的 mongodb ,最近在公司的新项目中应用,在 mac 上安装 mongodb 时发现始终安装不了,一直在报下面这样的错误: brew install mongodb 升级 brew 也不行,这个 mac 机上从未安装过 mongodb,但从错误信息中提示却是要卸载它,真是醉了。 从 ......

使用了大半年的 mongodb ,最近在公司的新项目中应用,在 mac 上安装 mongodb 时发现始终安装不了,一直在报下面这样的错误:

brew install mongodb

MongoDB 不在开源了,使用 Homebrew 安装只能玩社区版了

升级 brew 也不行,这个 mac 机上从未安装过 mongodb,但从错误信息中提示却是要卸载它,真是醉了。

从2019年9月2日开始 ,homebrew 也从核心仓库 (#43770) 当中移除了mongodb 模块


 

不过,幸运的是 mongodb 团队还在维护社区版的 homebrew,最后还是从stack overflow 上查找到答案:

MongoDB 不在开源了,使用 Homebrew 安装只能玩社区版了

 

为了搞清楚这些是啥意思,查看了  github。

  1. 在安装社区版前要先执行:brew tap mongodb/brew  这个过程有点久,我装过可能需要30分钟左右。
  2. 安装最新社区版:brew reinstall mongodb-community  
  3. 启动 mongodb-community 服务:brew services start mongodb-community ,提示 “service `mongodb-community` already started”,说明服务启动成功

mongodb-community 命令区别 mongodb

  1. 启动服务:brew services start mongodb-community
  2. 重启服务:  brew services restart mongodb-community
  3. 停止服务:brew services stop mongodb-community
  4. 安装某个版本:brew install mongodb-community@x.x.x
  5. 手动启动服务:mongod --config /usr/local/etc/mongod.conf

文件路径:

  1.  配置文件:/usr/local/etc/mongod.conf
  2.  日志目录路径:/usr/local/var/log/mongodb
  3.   数据目录路径:/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]
    }
  }
}