admin管理员组

文章数量:1530259

MongoDB

  • mongoDB安装
      • windows
      • ubuntu
  • 操作
  • python-mongodb
      • 安装
      • 操作
  • 远程访问
  • 虚拟环境
      • 虚拟环境一键安装
      • windows
      • linux

mongoDB安装

windows

  1. 从官方网站下载安装mongodb,注意取消掉这一步:
  2. 安装可视化管理工具 MongoChef
    连接配置:
  3. 将MongoDB的安装路径:D:\Program Files\MongoDB\Server\4.2\bin加入系统环境变量中的Path中
  4. 确保mongodb服务已启动,或者在管理员权限运行的cmd里执行net start mongodb
  5. 连接:在上述cmd窗口中输入mongodb,进入mongodb提示符>即可.

ubuntu

  1. 下载: wget -c https://fastdl.mongodb/linux/mongodb-linux-x86_64-ubuntu1804-4.2.5.tgz
  2. 解压: tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.2.5.tgz
  3. 移动目录到:mv mongodb-linux-x86_64-ubuntu1804-4.2.5 /usr/local/mongodb
  4. 创建目录存放mongodb数据文件: mkdir -p /data/db
  5. 将bin目录加入环境变量: export PATH=/usr/local/mongodb/bin:$PATH
  6. 创建日志文件:touch /usr/local/mongodb/mongodb.log
  7. 启动服务 在mongodb的bin目录下运行:mongod --dbpath=/data/db --logpath=/usr/local/mongodb/mongo.db --logappend &
  8. 运行 /usr/local/mongodb/bin/mongo,进入>提示符

操作

数据库(db)相当于关系型的数据库
集合(collection)相当于关系型数据库的表
文档(document)相当于关系型表的记录
查看帮助:help
=本地验证: 开通auth之后要验证才能使用数据库=
use shuihu
db.auth(“user”,“pass”)

  1. 显示所有数据库:show databases;
  2. 查看当前数据库:db
  3. 删除数据库:db.dropDatabase()
  4. 使用或创建数据库:use shuihu (创建数据库时会自动生成同名collection)
  5. 创建集合:db.createCollection(“xiyouji”)
  6. 查看集合:show collections
  7. 在集合插入文档(相当于一条记录) : db.shuihu.insert({name:“songjiang”,age:18,nickname:“jishiyu”})
    db.shuihu.save({name:“songjiang”,age:18,nickname:“jishiyu”})
  8. 查看所有文档(即记录):db.shuihu.find()
  9. 查看一条文档: db.shuihu.findOne({name:“武松”})
  10. 更新文档(指定id):db.shuihu.save({"_id" : ObjectId(“5e843f6e8cc6d25d047e93ba”), “name” : “宋江”,age:45,nickname:“及时雨”})
  11. 用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
  12. 用remove删除文档
    db.shuihu.remove({age:55}) #删除age=55的文档
  13. 格式化显示
    db.shuihu.find().pretty()
  14. 查询操作符 $lt (小于), g t ( 大 于 ) , gt(大于), gt(),lte(小于等于) ,KaTeX parse error: Expected '}', got 'EOF' at end of input: …ihu.find({age:{gte:26}}) #查询大于等于26岁的文档
  15. 根据id查询: db.shuihu.find({"_id":ObjectId(“5e84413f8cc6d25d047e93bb”)})
  16. 限制结果集limit():
    db.shuihu.find().pretty().limit(1) #限制1条
  17. 升序降序排列sort()
    db.shuihu.find().pretty().sort({age:1}) # 1为升序,-1为降序
  18. 统计数量
    db.shuihu.find().count()
  19. or查询:db.shuihu.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: …ame:/潘/},{age:{gt:15}}]}) #包含潘并且年龄15以上
  20. and查询:db.shuihu.find({name:/潘金莲\d{1}/,age:{$gte:20}}) #潘金莲2且大于或等于20
  21. 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&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://wwwblogs/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/manual/reference/method/db.createUser/index.html
mongodb内置的用户角色:https://docs.mongodb/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')

虚拟环境

虚拟环境一键安装

  1. 导出所需插件 pip freeze>requirements.txt
  2. 安装所需插件 pip install -r requrements.txt

windows

python3是内置vituualenv的,可以创建虚拟环境。为了方便管理,再自行安装使用virtualenvwrapper。它可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通过virtualenv来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。

  1. 安装
    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/simple
trusted-host = pypi.douban

  1. 创建虚拟环境
    mkvirtualenv test

修改mkvirtualenv的默认路径:
我的电脑->右键->属性->高级系统设置->环境变量->系统变量中添加一个参数>WORKON_HOME,将这个参数的值设置为你需要的路径。

  1. 切换到虚拟环境
    workon test

  2. 退出虚拟环境
    deactivate

  3. 删除虚拟环境
    rmvirtualenv test

  4. 列出所有虚拟环境
    lsvirtualenv

  5. 进入到虚拟环境所在目录

  • workon test
  • cdvirtualenv
  1. 修改mkvirtualenv的默认路径
    我的电脑->右键->属性->高级系统设置->环境变量->系统变量中添加一个参数WORKON_HOME,将这个参数的值设置为你需要的路径。
  2. 创建虚拟环境的时候指定Python版本:
    在使用mkvirtualenv的时候,可以指定--python的参数来指定具体的python路径:
    mkvirtualenv --python==C:\Python27\python.exe qf_env #创建python2版本的虚拟环境

linux

  1. 安装
    pip install virtualenvwrapper
  2. 配置
sudo vim ~/.bashrc  
export WORKON_HOME=$HOME/.virtualenvs  #让所有的虚拟环境 存放到指定的目录下  
source /usr/local/bin/virtualenvwrapper.sh #方便找到我们的环境 
source ~/.bashrc  让配置文件立即生效 
  1. 使用:
    =先用which python3 找到python3的位置或find / -name python3=
    指定版本:mkvirtualenv --python=/usr/bin/python3 test2
    其他与windows一致。

  2. mkvirtualenv --python=/usr/local/python3 虚拟环境名字
    如果有报错安装 sudo apt-get install python3-distutils 再执行上面的步骤
    如果 python 显示 3.6. 说明 python3的环境创建成功

本文标签: 豆瓣操作环境MongoDBPython