在Mac OS X上安装MongoDB

时间:2020-02-23 14:40:48  来源:igfitidea点击:

MongoDB是领先的NoSQL数据库之一。
MySql和Oracle被称为"关系数据库",类似地,我们可以说MongoDB是"文档数据库"。
我们可以在MongoDB数据库中存储任何有效的JSON。
MongoDB是开源的,并使用C++语言编写。

MongoDB以二进制格式(称为BSON(二进制JSON))存储JSON文档。
MongoDB的一些功能包括:

  • 全面的索引支持,可加快查询处理速度。

  • 主从复制使我们的系统具有容错能力。

  • 基于丰富文档的查询来获取存储的数据。

  • 自动分片以实现水平缩放。

MongoDB也是非常流行的NoSQL数据库,因为我们拥有适用于所有主要编程语言的驱动程序,例如Java,PHP,Perl,Python,Ruby,Scala,C,C++等。

在Mac上安装MongoDB

这是MongoDB系列的第一个教程,我们将学习如何在Mac OS X上安装MongoDB。
对于本教程,我正在使用以下软件:

  • Max OS X 10.12.6
  • 您可以从MongoDB下载页面下载的MongoDB Server 3.4.7

请遵循以下命令以安装MongoDB并启动它。

hyman@hymans-MacBook-Pro:~/Downloads/$curl -O https://fastdl.mongodb.org/osx/mongodb-linux-x86_64-3.4.7.tgz
hyman:~ hyman$tar -xvf mongodb-linux-x86_64-3.4.7.tgz
x mongodb-linux-x86_64-3.4.7/README
x mongodb-linux-x86_64-3.4.7/THIRD-PARTY-NOTICES
x mongodb-linux-x86_64-3.4.7/MPL-2
x mongodb-linux-x86_64-3.4.7/GNU-AGPL-3.0
x mongodb-linux-x86_64-3.4.7/bin/mongodump
x mongodb-linux-x86_64-3.4.7/bin/mongorestore
x mongodb-linux-x86_64-3.4.7/bin/mongoexport
x mongodb-linux-x86_64-3.4.7/bin/mongoimport
x mongodb-linux-x86_64-3.4.7/bin/mongostat
x mongodb-linux-x86_64-3.4.7/bin/mongotop
x mongodb-linux-x86_64-3.4.7/bin/bsondump
x mongodb-linux-x86_64-3.4.7/bin/mongofiles
x mongodb-linux-x86_64-3.4.7/bin/mongooplog
x mongodb-linux-x86_64-3.4.7/bin/mongoreplay
x mongodb-linux-x86_64-3.4.7/bin/mongoperf
x mongodb-linux-x86_64-3.4.7/bin/mongod
x mongodb-linux-x86_64-3.4.7/bin/mongos
x mongodb-linux-x86_64-3.4.7/bin/mongo
hyman@hymans-MacBook-Pro:~/Downloads/$mv mongodb-linux-x86_64-3.4.7 mongodb
hyman@hymans-MacBook-Pro:~/Downloads/$cd mongodb
hyman@hymans-MacBook-Pro:~/Downloads/mongodb$mkdir data
hyman@hymans-MacBook-Pro:~/Downloads/mongodb$cd bin
hyman@hymans-MacBook-Pro:~/Downloads/mongodb/bin$./mongod --dbpath /Users/hyman/Downloads/mongodb/data &
Mon Oct 14 15:55:52.131 [initandlisten] MongoDB starting : pid=950 port=27017 dbpath=/Users/hyman/Downloads/mongodb/data 64-bit host=hymans-MacBook-Pro.local
Mon Oct 14 15:55:52.131 [initandlisten] 
Mon Oct 14 15:55:52.131 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
Mon Oct 14 15:55:52.131 [initandlisten] db version v3.4.7
Mon Oct 14 15:55:52.131 [initandlisten] git version: b9925db5eac369d77a3a5f5d98a145eaaacd9673
Mon Oct 14 15:55:52.131 [initandlisten] build info: Darwin bs-osx-106-x86-64-2.10gen.cc 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun  7 16:32:41 PDT 2011; root:xnu-1504.15.3~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
Mon Oct 14 15:55:52.131 [initandlisten] allocator: system
Mon Oct 14 15:55:52.131 [initandlisten] options: { dbpath: "/Users/hyman/Downloads/mongodb/data" }
Mon Oct 14 15:55:52.132 [initandlisten] journal dir=/Users/hyman/Downloads/mongodb/data/journal
Mon Oct 14 15:55:52.132 [initandlisten] recover : no journal files present, no recovery needed
Mon Oct 14 15:55:52.238 [FileAllocator] allocating new datafile /Users/hyman/Downloads/mongodb/data/local.ns, filling with zeroes...
Mon Oct 14 15:55:52.238 [FileAllocator] creating directory /Users/hyman/Downloads/mongodb/data/_tmp
Mon Oct 14 15:55:52.347 [FileAllocator] done allocating datafile /Users/hyman/Downloads/mongodb/data/local.ns, size: 16MB,  took 0.108 secs
Mon Oct 14 15:55:52.646 [FileAllocator] allocating new datafile /Users/hyman/Downloads/mongodb/data/local.0, filling with zeroes...
Mon Oct 14 15:55:53.578 [FileAllocator] done allocating datafile /Users/hyman/Downloads/mongodb/data/local.0, size: 64MB,  took 0.931 secs
Mon Oct 14 15:55:53.871 [initandlisten] command local.$cmd command: { create: "startup_log", size: 10485760, capped: true } ntoreturn:1 keyUpdates:0  reslen:37 1633ms
Mon Oct 14 15:55:53.872 [initandlisten] couldn't unlink socket file /tmp/mongodb-27017.sockerrno:13 Permission denied skipping
Mon Oct 14 15:55:53.872 [websvr] admin web console waiting for connections on port 28017
Mon Oct 14 15:55:53.872 [initandlisten] waiting for connections on port 27017
hyman@hymans-MacBook-Pro:~/Downloads/mongodb/bin$

前两个命令是使用curl命令下载tar包,然后使用tar命令将其解压缩。
然后,我重命名提取的目录以轻松记住路径。

如果我们不提供数据目录,则MongoDB服务器会尝试在"/data/db"访问它,因此我使用带有"mongod 可执行文件的--dbpath选项覆盖它。

mongod是启动MongoDB服务器所需的服务器程序,我用&结束它,以便它在后台运行,并且在我关闭终端时不会终止。

MongoDB的默认端口是27017,但是我们可以通过提供命令行选项或者通过配置文件来更改它。

就是这样,我们的MongoDB服务器已启动并正在运行,现在我们可以使用MongoDB终端客户端对其进行测试。

hyman@hymans-MacBook-Pro:~/Downloads/mongodb/bin$./mongo
MongoDB shell version: 3.4.7
connecting to: test
Server has startup warnings: 
Mon Oct 14 16:11:35.330 [initandlisten] 
Mon Oct 14 16:11:35.330 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
> show dbs
local	0.078125GB
> use theitroad
switched to db theitroad
> db.names.save({"id":123,"name":"hyman"})
> db.names.find()
{ "_id" : ObjectId("525c7af46e7301702bbfea1e"), "id" : 123, "name" : "hyman" }
> db.datas.save({})
> show collections
datas
names
system.indexes
> show dbs
theitroad	0.203125GB
local	0.078125GB
> exit
bye
hyman@hymans-MacBook-Pro:~/Downloads/mongodb/bin$

show dbs:获取数据库列表的命令

use DBNAME:用于创建新数据库或者切换到现有数据库的命令,请注意,除非对新数据库进行任何保存或者查找操作,否则不会创建该数据库。

db.names.save({}):用于将JSON文档保存在当前数据库中的命令。
MongoDB按照集合存储文档。
在此命令中,名称是集合。

db.names.find():用于列出名称集合中所有文档的命令。

show collections:用于列出当前数据库中所有集合的命令。

您可能会注意到,我是通过以./开头的相对路径访问mongodb可执行文件的,您可以将mongodb bin位置添加到PATH变量中以直接访问mongodb可执行文件。

hyman@hymans-MacBook-Pro:~/Downloads/mongodb/bin$vi ~/.bash_profile 
//add below line and save it
export PATH=$PATH:/Users/hyman/Downloads/mongodb/bin
hyman@hymans-MacBook-Pro:~/Downloads/mongodb/bin$source ~/.bash_profile

现在,您可以从任何地方访问mongodb可执行文件,而无需提供目录位置。

将MongoDB作为Mac OS X服务运行

要将MongoDB作为服务运行,我们需要在/Library/LaunchDaemons目录中创建PList文件。

org.mongodb.mongod.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.mongodb.mongod</string>
<key>ProgramArguments</key>
<array>
  <string>/Users/hyman/Downloads/mongodb/bin/mongod</string>
  <string>run</string>
  <string>--config</string>
  <string>/Users/hyman/Downloads/mongodb/mongod.conf</string>
</array>
<key>RunAtLoad</key>
<true
<key>UserName</key>
<string>hyman</string>
</dict>
</plist>
hyman@hymans-MacBook-Pro:~$cd /Library/LaunchDaemons
hyman@hymans-MacBook-Pro:/Library/LaunchDaemons$sudo vi org.mongodb.mongod.plist 
hyman@hymans-MacBook-Pro:/Library/LaunchDaemons$sudo launchctl load org.mongodb.mongod.plist 

#below commands to start and stop service through launchctl command
hyman@hymans-MacBook-Pro:/Library/LaunchDaemons$sudo launchctl start org.mongodb.mongod
hyman@hymans-MacBook-Pro:/Library/LaunchDaemons$sudo launchctl stop org.mongodb.mongod

hyman@hymans-MacBook-Pro:/Library/LaunchDaemons$ps -eaf | grep mongod
  0    61     1   0  3:04PM ??         0:06.31 /Users/hyman/Downloads/mongodb/bin/mongod run --config /Users/hyman/Downloads/mongodb/mongod.conf
hyman@hymans-MacBook-Pro:/Library/LaunchDaemons$

您可能会注意到,我没有使用选项作为命令行参数,而是使用配置文件将参数传递给mongod。
MongoDB配置文件中的一些常用配置可以是:

hyman@hymans-MacBook-Pro:~/Downloads/mongodb$cat mongod.conf 
#we can change port, I am setting default port
port=27017

#we can enable verbose mode, by default its false
verbose=true

#limit max connections, cant set more than 20000
maxConns=50

#setting up log path
logpath=/Users/hyman/Downloads/mongodb/logs/mongo.log
logappend=true

#create PID file
pidfilepath=/Users/hyman/Downloads/mongodb/mongo.pid

#setting dbpath, dont want to use default /data/db path
dbpath=/Users/hyman/Downloads/mongodb/data

请注意,您需要手动创建mongo.log文件,并且该文件应具有正确的权限。
例如,在上述配置中,我使用" hyman"用户运行该过程,因此日志文件应由同一用户创建。
如果您在plist文件中未提供任何用户信息,它将以root用户身份启动。

现在,当您重新启动Mac OS X时,您会注意到MongoDB已经作为服务启动,您不需要手动启动它。