MongoDB安装
系统环境:CentOS 7
1、下载安装包
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.12.tgz
2、解压
tar -zxvf mongodb-linux-x86_64-3.2.12.tgz
3、移动到指定位置
mv mongodb-linux-x86_64-3.2.12/ /usr/local/mongodb
4、在/usr/local/mongodb下创建文件夹
mkdir -p data/db
mkdir logs
5、在/usr/local/mongodb/bin下新建配置
vi mongodb.conf
输入如下内容:
dbpath = /usr/local/mongodb/data/db #数据文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log #日志文件存放目录
port = 27017 #端口
fork = true #以守护程序的方式启用,即在后台运行
nohttpinterface = true
auth=true
bind_ip=0.0.0.0
6、环境变量配置
vi /etc/profile
输入如下内容:
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
保存后,重启系统配置:
source /etc/profile
7、启动
在/usr/local/mongodb/bin下
./mongod -f mongodb.conf
MongoDB 提供了简单的 HTTP 用户界面。 如果你想启用该功能,需要在启动的时候指定参数 --rest 。注意:该功能只适用于 MongoDB 3.2 及之前的早期版本。
./mongod -f mongodb.conf --rest
MongoDB 的 Web 界面访问端口比服务的端口多1000。
如果你的MongoDB运行端口使用默认的27017,你可以在端口号为28017访问web用户界面,即地址为:http://localhost:28017
。
8、关闭
./mongod -f ./mongodb.conf --shutdown
9、设置远程访问
firewall-cmd --zone=public --add-port=27017/tcp --permanent #设置防火墙
firewall-cmd --reload #重启防火墙
firewall-cmd --permanent --query-port=27017/tcp #查看是否设置成功
10、MongoDB后台管理 Shell
MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):
cd /usr/local/mongodb/bin
./mongo
MongoDB shell version: 3.2.12
connecting to: test
……
11、创建用户
创建用户管理员:
use admin
db.createUser({user:"root",pwd:"root123456",roles:["userAdminAnyDatabase"]})
db.auth('root','root123456')
以用户管理员身份登录,并切换数据库,创建数据库用户:
# 切换到test数据库
use test
# 创建用户名、密码、角色
db.createUser({user:"username",pwd:"@user123456*",roles:[{role:"readWrite",db:"securitydata"}]})
# 设置mongodb配置中的auth为true(mongod.conf):auth=true
# 验证mongodb数据库权限
db.auth('user','@user123456*')
Mongo shell基本命令
数据库
show dbs #显示所有数据库
use DATABASE_NAME #切换到数据库DATABASE_NAME
db.dropDatabase() #删除当下数据库
集合
use test
db.createCollection("mycol")
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
show collections
db.mycol.drop()
文档
# 增加
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
# 删除
db.col.remove({'title':'MongoDB 教程'})
db.col.remove({}) # truncate 所有数据
# 更新
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true}) #没有multi参数则只更新发现的第一条记录
#查看更多:http://www.runoob.com/mongodb/mongodb-update.html
# 查询
db.col.find({key1:value1, key2:value2}).pretty()
db.col.findOne({key1:value1, key2:value2}).pretty()
#查看更多:http://www.runoob.com/mongodb/mongodb-query.html
pymongo基本使用
连接
from pymongo import MongoClient
# 连接客户端方式
client = MongoClient()
client = MongoClient('localhost', 27017)
# 连接db方式
db = client.test_database
db = client['test-database']
# 连接collection方式
collection = db.test_collection
collection = db['test-collection']
# 需要用户认证时,在db实例化后执行下列代码
db.authenticate(ACCOUNT, PWD) #对应db的账户和密码
文档的常用命令
posts = db.posts
# 插入
post = {"author": "Mike"}
post_id = posts.insert_one(post).inserted_id
# 批量插入
new_posts = [{"author": "Mike",{"author": "Eliot"}]
result = posts.insert_many(new_posts)
result.inserted_ids
# 查询
posts.find_one({"author": "Eliot"})
posts.count_documents({"author": "Mike"})
posts.count_documents({})
posts.find({"date": {"$lt": d}}).sort("author")
参考资料
[1] centos7下mongodb安装和配置
https://blog.youkuaiyun.com/rzrenyu/article/details/79472508
[2] MongoDB菜鸟教程
http://www.runoob.com/mongodb/mongodb-tutorial.html
[3] PyMongo API
http://api.mongodb.com/python/current/tutorial.html