在Mac OS X上安装MongoDB
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已经作为服务启动,您不需要手动启动它。