MongoDB 学习笔记

1,251 阅读5分钟

MongoDB 起步(Mac)

第一步:下载

  • 方式一:通过浏览器在Mongo官网中下载对应安装包 下载MongoDB安装包

  • 方式二:通过终端的命令下载

curl http://downloads.mongodb.org/osx/mongodb-osx-x86_64-2.4.6.tgz --output mongo

第二步:配置环境

  1. 将下载的tgz安装文件解压,并移动到自定义的文件夹中
// 解压下载文件
tar -zxvf mongodb-osx-x86_64-x.x.x
  // 移动到用户创建的mongodb文件夹📁中
mv -n ~/Downloads/mongodb-osx-x86_64-x.x.x ~/Applications/mongodb/  
  1. 在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

启动MongoDB服务

方法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

第四步: 启动命令行&可视化操作工具

  1. 打开一个新建终端,在mongodb/bin目录中,执行命令 ./mongo(⚠️注意:不是./mongod),进入mongo客户端命令行工具

启动命令行工具

补充:MongoDB远程配置(用于连接云服务器上MongoDB数据库)

  1. 进行服务器的防火墙设置
  2. 在你的云服务器管理后台中上配置安全组,允许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