MongoDB 起步(Mac)
第一步:下载
-
方式一:通过浏览器在Mongo官网中下载对应安装包
-
方式二:通过终端的命令下载
curl http://downloads.mongodb.org/osx/mongodb-osx-x86_64-2.4.6.tgz --output mongo
第二步:配置环境
- 将下载的tgz安装文件解压,并移动到自定义的文件夹中
// 解压下载文件
tar -zxvf mongodb-osx-x86_64-x.x.x
// 移动到用户创建的mongodb文件夹📁中
mv -n ~/Downloads/mongodb-osx-x86_64-x.x.x ~/Applications/mongodb/
- 在mongodb根目录下创建
data/db文件夹和logs/mongo.log文件夹并添加.log文件,用于放置mongodb数据和日志记录,并且给该目录设置权限
sudo mkdir -p /data/db
sudo chown -R 用户名(你自己的) /data
第三步:启动服务
方法1: 通过终端进入mongodb/bin目录后,再输入./mongod启动MongoDB服务(⚠️注意: 如果data/db目录不是建在根目录/下,需要在./mongod命令后指定相应的数据库存放路径)
./mongod --dbpath /Users/jiangwen/data
方法2:
在mongodb/etc目录下创建mongo.conf配置文件,然后就可以在bin目录下通过./mongod -f ./mongo.conf启动:
📌:输入vim /opt/mongodb3.6/bin/mongodb.conf进入mongodb.conf的编辑,配置文件如下:
dbpath=/home/dc2-user/mongodb/data #数据文件存放目录
logpath=/home/dc2-user/mongodb/logs/mongo.log #日志文件存放目录
port=27017 #端口
fork = true #以守护程序的方式启用,即在后台运行
logappend=true
journal=true
quiet=true
bind_ip=0.0.0.0
第四步: 启动命令行&可视化操作工具
- 打开一个新建终端,在
mongodb/bin目录中,执行命令./mongo(⚠️注意:不是./mongod),进入mongo客户端命令行工具
补充:MongoDB远程配置(用于连接云服务器上MongoDB数据库)
- 进行服务器的防火墙设置
- 在你的云服务器管理后台中上配置安全组,允许mongoDB默认的27017端口进行访问
MongoDB 基础操作
基础概念:
- 数据库(db): 存放集合数据的库
- 集合(collections): 文档的集合表,对应mysql的数据表
- **文档(document): ** 类json的的对象,对应mysql的数据
基本操作:
查看
show dbs // 查看所有数据库
show collections // 查看当前数据库下的所有集合表
增加
use DB_NAME // 创建并切换到数据库DB_NAME
db.COLLECTION_NAME.insert({"name":"jiangwen"}) // 添加集合表并插入数据
⚠️注意:创建的数据库在没有插入数据时不显示
删除
db.dropDatabase() // 删除当前所在的数据库
db.COLLECTION_NAME.drop() // 删除该数据库下的集合表
db.COLLECTION_NAME.remove({}) // 删除集合表中的所有的文档
db.COLLECTION_NAME.remove({'title':'MongoDB'}) // 删除集合表中的所有title为MongoDB的文档
db.COLLECTION_NAME.remove({'title':'MongoDB'},1) // 删除1条集合表中的title为MongoDB的文档
修改
update(): 用于更新已存在的文档
语法格式:
/*
* query : update的查询条件,类似sql update查询内where后面的。
* update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
* upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
* multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
* writeConcern :可选,抛出异常的级别。
*/
db.COLLECTION_NAME.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
🌰例子:
// 将col集合中第一条记录title为MongoDB的值更新为DB
db.col.update({'title': 'MongoDB'}, {$set:{'title': 'DB'}})
// 将col集合中全部记录title为MongoDB的值更新为DB
db.col.update({'title': 'MongoDB'}, {$set:{'title': 'DB'}}, false, true)
save() : 通过传入的文档来替换已有文档
语法格式:
/*
* document : 文档数据。
* writeConcern :可选,抛出异常的级别。
*/
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
🌰例子:
// 替换_id 为 56064f89ade2f21f36b03136 的整个文档数据
db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "newTitle",
}
)
查询
语法格式:
/*
* query : 查询条件
*/
db.COLLECTION_NAME.find(
<query>
)
查询条件:
| 操作 | 格式 | 范例 |
|---|---|---|
| 等于 | {<key>:<value>} | db.col.find({"by":"教程"}) |
| 小于 | {<key>:{$lt:<value>}} | db.col.find({"likes":{$lt:50}} |
| 小于或等于 | {<key>:{$lte:<value>}} | db.col.find({"likes":{$lte:50}}) |
| 大于 | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}}) |
| 大于或等于 | {<key>:{$gte:<value>}} | db.col.find({"likes":{$gte:50}}) |
| 不等于 | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}}) |
| AND | ({key1:value1, key2:value2}) | db.col.find({"by":"教程", "title":"MongoDB "}) |
| OR | ({$or: [{key1: value1},{key2:value2}]}) | db.col.find({$or:[{"by":"教程"},{"title": "MongoDB"}]}) |
🌰例子:
// 通过name和age键来查询user中name=jiangwen并且年龄小于28的数据
db.user.find({"name":"jiangwen", "age": {$lt:28}})
// 查询名字为jiangwen并且年龄为28或性别为男性的数据
db.col.find({"name": 'jiangwen', $or: [{"age": 28},{"sex": "male"}]})
导入数据
语法格式:
/*
* -h,–host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
* –port:代表远程连接的数据库的端口,默认连接的远程端口27017;
* -u,–username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
* -p,–password:代表连接数据库的账号对应的密码;
* -d,–db:代表连接的数据库;(必选参数)
* -c,–collection:代表连接数据库中的集合;(必选参数)
* -f, –fields:代表集合中的字段,可以根据设置选择导出的字段;(必选参数)
* –type:代表导出输出的文件类型,包括csv和json文件;
* -o, –out:代表导出的文件名;
* -q, –query:代表查询条件;
* –skip:跳过指定数量的数据;
* –limit:读取指定数量的数据记录;
* –sort:对数据进行排序,通过参数指定排序的字段,1(升序)和-1(降序)来指定排序的方式,如 sort({KEY:1})
*/
mongoimport -d [DB_name] -c [Collection_name] -f [File_url]
./mongoimport -d user -c goods --file /Users/jiangwen/Desktop/z1b8jp/resource/dumall-goods
注意: 在使用 mongoimport模块的时候必须要退出 mongo环境!!!
重启mongodb
service mongod restart