Mac安装Mongodb
brew安装Mongodb
1. install 之前,iTerm2 下用 brew 查看已安装软件、搜索 mongodb:
brew list
brew search mongodb
2. 安装 mongodb :
brew install mongodb
此处需要稍等一段时间,成功后会输出以下即说明安装成功:
这时 MongoDB 将被安装在 /usr/local/Cellar/mongodb/4.0.3 (我的 MongoDB 版本是 4.0.3) 。
b
r
e
w
安
装
时
出
现
x
c
r
u
n
:
e
r
r
o
r
:
i
n
v
a
l
i
d
a
c
t
i
v
e
d
e
v
e
l
o
p
e
r
p
a
t
h
(
/
L
i
b
r
a
r
y
/
D
e
v
e
l
o
p
e
r
/
C
o
m
m
a
n
d
L
i
n
e
T
o
o
l
s
)
解
决
\color{red}{brew安装时出现xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools) 解决}
brew安装时出现xcrun:error:invalidactivedeveloperpath(/Library/Developer/CommandLineTools)解决
原因是升级了macOS Sierra 版本之后,command line tools 工具没有用.
输入命令xcode-select --install
点击安装,等待软件安装完成即可。
关闭命令窗口,重新运行brew install mongdb
3. .配置 MongoDB :
安装完 MongoDB 后,需要配置一下 MongoDB ,不然是无法启动服务端的。
(1) 创建根目录下 data/db 文件夹:
mkdir -p /data/db
- p
可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
如果出现 permission denied ,加上 sudo 命令:
sudo mkdir -p /data/db
(2) 给 /data/db 文件夹赋予权限:
sudo chown id -u /data/db
如果出现 “illegal user name” 的错误提示,这时我们可以查看当前的 username 并赋予权限:
$ whoami
username
$ sudo chown username /data/db
(3)添加环境变量:
打开 .zshrc 文件;
vim ~/.zshrc
添加 MongoDB 安装目录到环境变量中:
export PATH=/usr/local/Cellar/mongodb/3.4.6/bin:${PATH}
执行命令使环境变量生效:
source ~/.zshrc
(4)修改 MongoDB 配置文件, 配置文件默认在 /usr/local/etc 下的 mongod.conf: vim /usr/local/etc/mongod.conf
# Store data in /usr/local/var/mongodb instead of the default /data/db
dbpath = /data/db
# Append logs to /usr/local/var/log/mongodb/mongo.log
logpath = /usr/local/var/log/mongodb/mongo.log
logappend = true
# Only accept local connections
bind_ip = 127.0.0.1
启动服务端:
此时,执行 mongod 启动 mongodb 服务:mongod
当出现 waiting for connections on port 27017 这些字样时,我们的服务器已经启动成功,它正在运行和侦听端口27017。
这样就可以开始与服务器进行交互了,例如只需打开一个新的终端选项卡并运行 mongo ,这将打开 mongo 的交互式控制台并连接到默认服务器(localhost:27017):
到现在,我们服务器已经启动成功,接下来就可以进行操作了,输入 show dbs 等命令试试~
往后要重新启动 mongodb 服务、进入 mongodb 命令行的操作:
在一个iTerm2窗口执行:mongod
//MongoDB starting…waiting for connections
另一个iTerm2窗口执行:mongo
//MongoDB shell
输 入 命 令 m o n g o d 报 错 48 j 解 决 方 法 \color{red}{输入命令mongod报错48j解决方法} 输入命令mongod报错48j解决方法
终止在端口上运行的进程,这在大多数情况下都是mongodb进程。
npx kill-port 27017
Mongodb常用命令
1. 数据库
-
查看所有数据库,可以使用命令:
show dbs
> show dbs admin 0.000GB local 0.000GB
-
查看当前所连接的数据库 :
db
-
MongoDB 创建数据库/切换 :
use DATABASE_NAME
如果数据库不存在,则创建数据库,否则切换到指定数据库。
-
刚创建的数据库并显示在数据库的列表中, 要显示它,我们需要向刚建的数据库插入一些数据。
> db.runoob.insert({"name":"菜鸟教程"}) WriteResult({ "nInserted" : 1 }) > show dbs local 0.078GB runoob 0.078GB test 0.078GB >
-
MongoDB 删除数据库 :
db.dropDatabase()
-
首先,查看所有数据库:
show dbs
> show dbs local 0.078GB runoob 0.078GB test 0.078GB
-
接下来我们切换到你要删除数据库如: runoob:
use runoob
> use runoob switched to db runoob >
-
执行删除命令:
> db.dropDatabase() { "dropped" : "runoob", "ok" : 1 }
-
最后,我们再通过
show dbs
命令数据库是否删除成功:> show dbs local 0.078GB test 0.078GB >
-
2.集合
-
查看已有集合:
show collections
命令 -
创建集合 :
db.createCollection("CollectionName")
-
创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。
> db.createCollection("mycol",{ capped : true, autoIndexId : true, size : 6142800, max : 10000 } ){ "ok" : 1 }
-
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
> db.mycol2.insert({"name" : "菜鸟教程"}) > show collections mycol2 ...
-
-
删除集合 :
db.collection.drop()
> use runoob switched to db runoob > show tables site > db.site.drop() true > show tables >
3. 文档
-
插入文档 :
-
MongoDB 使用 insert() 或 save() 方法向集合中插入文档
db.COLLECTION_NAME.insert(document)
- 插入一条文档
javascript >db.site.insert({ title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
- 插入多条文档: db.site.insert([{document1},{document2}])
javascript >db.site.insert([{ title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 },{ title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }, }])
-
查看已插入文档: :
db.site.find()
-
更新文档 :
db.update.update()
-
要修改多条相同的文档,则需要设置 multi 参数为 true。
-
删除文档 :
db.site.remove({'title':'MongoDB 教程'})
-
查询文档 :
-
db.site.find()
查询所有数据 -
db.site.find().pretty()
以格式化方式显示数据 -
db.site.find({age:22})
查询 age = 22 的记录 -
db.userInfo.find({age:22,name:'zhangsan'})
查询 age = 22 并且name = ‘zhangsan’ 的记录 -
db.site.find({$or:[{"age":"23"},{"name":"amy"}]}).pretty();
查询名字是amy或年龄为33的记录并以格式化形式显示 -
db.site.find({name:/mongo/})
查询 name 中包含 mongo 的数据 -
db.site.find({},{age:1})
只返回age字段,其他字段都不返回,_id默认返回 -
db.site.find({},{age:1,_id:0})
只返回age字段,其他字段都不返回,_id不返回 -
db.site.find({age:{$ne:24}})
查询年龄不是24的用户 -
db.site.find().sort({age:1})
按照年龄升序 -
db.userInfo.find().sort({age:-1})
按照年龄降序
-