mongoDB安装
windows
- 从官方网站下载安装mongodb,注意取消掉这一步:
- 安装可视化管理工具 MongoChef
连接配置:
- 将MongoDB的安装路径:D:\Program Files\MongoDB\Server\4.2\bin加入系统环境变量中的Path中
- 确保mongodb服务已启动,或者在管理员权限运行的cmd里执行net start mongodb
- 连接:在上述cmd窗口中输入mongodb,进入mongodb提示符>即可.
ubuntu
- 下载: wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.2.5.tgz
- 解压: tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.2.5.tgz
- 移动目录到:mv mongodb-linux-x86_64-ubuntu1804-4.2.5 /usr/local/mongodb
- 创建目录存放mongodb数据文件: mkdir -p /data/db
- 将bin目录加入环境变量: export PATH=/usr/local/mongodb/bin:$PATH
- 创建日志文件:touch /usr/local/mongodb/mongodb.log
- 启动服务 在mongodb的bin目录下运行:mongod --dbpath=/data/db --logpath=/usr/local/mongodb/mongo.db --logappend &
- 运行 /usr/local/mongodb/bin/mongo,进入>提示符
操作
数据库(db)相当于关系型的数据库
集合(collection)相当于关系型数据库的表
文档(document)相当于关系型表的记录
查看帮助:help
=本地验证: 开通auth之后要验证才能使用数据库=
use shuihu
db.auth(“user”,“pass”)
- 显示所有数据库:show databases;
- 查看当前数据库:db
- 删除数据库:db.dropDatabase()
- 使用或创建数据库:use shuihu (创建数据库时会自动生成同名collection)
- 创建集合:db.createCollection(“xiyouji”)
- 查看集合:show collections
- 在集合插入文档(相当于一条记录) : db.shuihu.insert({name:“songjiang”,age:18,nickname:“jishiyu”})
db.shuihu.save({name:“songjiang”,age:18,nickname:“jishiyu”}) - 查看所有文档(即记录):db.shuihu.find()
- 查看一条文档: db.shuihu.findOne({name:“武松”})
- 更新文档(指定id):db.shuihu.save({"_id" : ObjectId(“5e843f6e8cc6d25d047e93ba”), “name” : “宋江”,age:45,nickname:“及时雨”})
- 用update来更新文档:
db.shuihu.update({name:“武松”},{KaTeX parse error: Expected 'EOF', got '}' at position 13: set:{age:25}}̲) #更新age为25 db…inc:{age:25}}) #更新age+25 - 用remove删除文档
db.shuihu.remove({age:55}) #删除age=55的文档 - 格式化显示
db.shuihu.find().pretty() - 查询操作符 $lt (小于), g t ( 大 于 ) , gt(大于), gt(大于),lte(小于等于) ,KaTeX parse error: Expected '}', got 'EOF' at end of input: …ihu.find({age:{gte:26}}) #查询大于等于26岁的文档
- 根据id查询: db.shuihu.find({"_id":ObjectId(“5e84413f8cc6d25d047e93bb”)})
- 限制结果集limit():
db.shuihu.find().pretty().limit(1) #限制1条 - 升序降序排列sort()
db.shuihu.find().pretty().sort({age:1}) # 1为升序,-1为降序 - 统计数量
db.shuihu.find().count() - or查询:db.shuihu.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: …ame:/潘/},{age:{gt:15}}]}) #包含潘并且年龄15以上
- and查询:db.shuihu.find({name:/潘金莲\d{1}/,age:{$gte:20}}) #潘金莲2且大于或等于20
- and or查询: #查询含潘并且18岁以上或者含绰号含苦字的文档
db.shuihu.find({name:/潘/,age:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:18}̲,or:[{nickname:/苦/}]})
python-mongodb
安装
pip install pymongo
操作
from pymongo import MongoClient
# 创建连接
connects = MongoClient('mongodb://120.24.144.212:27017/shuihu', username='mongodb', password='mymongodb')
# 连接数据库
db = connects.shuihu
# 连接集合
collection = db.shuihu
# 插入文档
collection.insert([{"name":"潘金莲2","age":20,"nickname":"苦命万人迷"}])
# 更新文档 ,以下只更新一条
collection.update({"name":r"/潘金莲/"},{"$set":{"age":21}})
# 删除文档,删除所有
collection.remove({"name":"潘金莲2"})
# 查找文档
res = collection.find({"age":{"$gt":18}})
# 统计查询
res1 = collection.find({"age":{"$gt":18}}).count()
print(res1)
# 分页查询
# skip参数 需要传递过来 http://www.baidu.com&page=1
pagecount = 3
page = 2
start = (page-1)*pagecount
res2 = collection.find().skip(start).limit(pagecount)
# 断开连接
connects.close()
for re in res:
print(re)
print(re["name"])
远程访问
(参考https://www.cnblogs.com/kimkat/p/9192785.html)
1.修改配置文件mongodb.conf
命令:vim /etc/mongodb.conf
把 bind_ip=127.0.0.1 这一行注释掉或者是修改成 bind_ip=0.0.0.0,最好是直接注释掉,因为在centos下,使用bind_ip=0.0.0.0会报错。
注意:设置远程访问以后,密码启动auth授权访问,不然非常不安全,数据库容易被攻击,在配置文件中修改如下:
# Turn on/off security. Off is currently the default
# noauth = true
auth = true
2.在mongo数据库中新建用户名和密码:
在非授权模式下启动数据库,并使用mongo连接上数据库,例如我们要新建meeting数据库的用户和密码,则:
use meeting
db.createUser({user:"kimkat",pwd:"123456",roles:[{ role: "readWrite", db: "meeting" }]})
注意:原文是“readWriteAnyDatabase”,要改成“readWrite”。
如果要添加meeting数据库的用户,请先use meeting,不然即使添加成功,也连接不上。
mongodb添加用户的方法:https://docs.mongodb.com/manual/reference/method/db.createUser/index.html
mongodb内置的用户角色:https://docs.mongodb.com/manual/core/security-built-in-roles/index.html
3.重启mongodb服务
命令:/etc/init.d/mongodb restart
开放27017端口:iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT
4.远程连接
connects = MongoClient('mongodb://120.24.*.*:27017/shuihu', username='abc', password='123456')
虚拟环境
虚拟环境一键安装
- 导出所需插件 pip freeze>requirements.txt
- 安装所需插件 pip install -r requrements.txt
windows
python3是内置vituualenv的,可以创建虚拟环境。为了方便管理,再自行安装使用virtualenvwrapper。它可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通过virtualenv
来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。
- 安装
windows:
pip install virtualenvwrapper-win
windows平台下pip配置
pip是python的包管理工具,下面的操作是软件以后从豆瓣下载,速度快。win永久安装pip的源配置:
首先在window的文件夹窗口输入 :` %APPDATA%
然后在底下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini,然后再里面输入内容:
[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com
- 创建虚拟环境
mkvirtualenv test
修改
mkvirtualenv
的默认路径:
在我的电脑->右键->属性->高级系统设置->环境变量->系统变量
中添加一个参数>WORKON_HOME
,将这个参数的值设置为你需要的路径。
-
切换到虚拟环境
workon test -
退出虚拟环境
deactivate -
删除虚拟环境
rmvirtualenv test -
列出所有虚拟环境
lsvirtualenv -
进入到虚拟环境所在目录
- workon test
- cdvirtualenv
- 修改mkvirtualenv的默认路径
在我的电脑->右键->属性->高级系统设置->环境变量->系统变量
中添加一个参数WORKON_HOME
,将这个参数的值设置为你需要的路径。 - 创建虚拟环境的时候指定
Python
版本:
在使用mkvirtualenv
的时候,可以指定--python
的参数来指定具体的python
路径:
mkvirtualenv --python==C:\Python27\python.exe qf_env #创建python2版本的虚拟环境
linux
- 安装
pip install virtualenvwrapper
- 配置
sudo vim ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs #让所有的虚拟环境 存放到指定的目录下
source /usr/local/bin/virtualenvwrapper.sh #方便找到我们的环境
source ~/.bashrc 让配置文件立即生效
-
使用:
=先用which python3 找到python3的位置或find / -name python3=
指定版本:mkvirtualenv --python=/usr/bin/python3 test2
其他与windows一致。 -
mkvirtualenv --python=/usr/local/python3 虚拟环境名字
如果有报错安装 sudo apt-get install python3-distutils 再执行上面的步骤
如果 python 显示 3.6. 说明 python3的环境创建成功