python数据库操作MySQL-MongoDB-Redis之二 MongoDB

<center>python数据库操作MySQL-MongoDB-Redis之二 MongoDB</center>

一 MongoDB 在win10下的安装

MongoDB官网

  1. 从官网下载完安装包后,开始安装:(我这以最新的mongodb-win32-x86_64-2008plus-ssl-3.6.3-signed.msi版本举例)
    安装过程: custom是自定义安装选项,建议安装在非系统盘(C盘)上


    1.png

关键点来了,就在下一步操作:


2.png

如果这不取消安装,会发现有的电脑死活安装不上,原因就在这compas问题上

  1. 再安装可视化界面(compass)(https://www.mongodb.com/download-center?jmp=docs&_ga=2.208589714.169613539.1518053388-361642939.1518053388#compass
    这样可以防止出现MongoDB安装不成功
  2. 现在配置启动MongoDB的服务以及将它设置为windows服务
    • 使用快捷键快速呼出本地服务项: win+R 弹出运行框
      3.png
    • 在出现的运行窗口中输入services.msc 然后按确定按钮,或者直接回城即可调出本地服务项
      5.png

      6.png
    • 找到mongodb服务,嘿嘿这提前说了,这就是我们下一步需要配置的mongodb服务
      7.png
    • 现在开始配置MongoDB服务:在cmd命令下跳转到D:\MongoDB\Server\3.6\bin目录下

      • 先创建MongoDB的config配置文件 用记事本打开,输入以下内容

      • datapath=D:\MongoDB\data

      • logpath=D:\MongoDB\log
        11.png
      • 可设置开机自启动,或者手动启动关闭,

    • 开启MongoDB服务,以管理员身份启动cmd命令窗口。切换到MongoDB下的bin目录下输入net start MongoDB 提示xxx服务正在启动 xxx服务已经启动成功,就可以输入mongo.exe运行客户端了。

    • 这里有个小点:想要直接输入mongo.exe就能运行MongoDB,前提要将它添加到系统的环境变量里面去,详见以下步骤

    • 找到此电脑标识
      22.png
    • 右键选择属性
      33.png
    • 选择高级系统设置
      44.png
    • 详细步骤按序号进行(这种操作,使用任何软件都是异曲同工的事)
      hah.png

二 MongoDB在ubuntu:1604下的安装

  1. 安装方式一
  • 从官网下载linux/mongodb-linux-x86_64-ubuntu1604-3.6.3.tgz
  • 解压 tar -zxvf mongodb-linux-x86_64-ubuntu1604-3.6.3.tgz
  • 移动到/usr/local目录下
    sudo mv mongodb-linux-x86_64-ubuntu1604-3.6.3 /usr/local/mongodb
  • 将可执行文件添加到PATH路径中
    export PATH=/usr/local/mongodb/bin:$PATH
  1. 安装方式二
  • 直接简单粗暴,不需要下载源文件,可以直接用apt-get命令进行安装.打开终端,输入以下命令: sudo apt-get install mongodb
  • 安装完成后,在终端输入以下命令查看MongoDB版本:
    mongo -version
  • 启动与关闭mongodb命令如下:
    service mongodb start #启动mongodb服务
    service mongodb stop #终止mongodb服务
  • 默认设置MongoDB是随ubuntu系统启动自启动的,输入命令查看是否启动成功 pgrep mongo - I
  • 卸载mongodb
    sudo apt-get --purge remove mongodb mongodb-clients mongodb-server

Mac端下载与安装 与linux大致相同就不再多写

MongoDB数据库的常用操作命令

show dbs:显示数据库列表
show collections:显示当前数据库中的集合(类似关系数据库中的表table)
show users:显示所有用户
use yourDB:切换当前数据库至yourDB
db.help() :显示数据库操作命令
db.yourCollection.help() :显示集合操作命令,yourCollection是集合名

数据库的CRUD操作

  1. 将单个文档或多个文档插入并保存文档
    db.collection_name.insert({'bar':'baz'}) #这一操作会给文档增加一个"_id"键(原来没有的话),然后保存到MongoDB中
  • 单个插入
    db.collection_name.insertone({'bar':'baz'})
  • 批量插入
    db.collection_name.insermany() #可以将多个文档插入到一个集合中
  1. 查询文件
    db.collection_name.find(query, projection)
    query :可选,使用查询操作符指定查询条件
    projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
    若不指定 projection,则默认返回所有键,指定 projection 格式如下,有两种模式
    db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的键,不返回其他键
    db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的键,返回其他键

想要较可读性推荐使用pretty()方法
db.collection.find().pretty()
4.更新数据
db.collection_name.update(criteria,objNew,upset,multi)

query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
  1. 删除数据
    db.collection_name.remove() 现在官方更推荐使用delete() 和detelemany()方法
    删除集合下全部文档
    db.inventory.deleteMany({}) #推荐使用
    删除status等于A的全部文档
    db.inventory.deleteMany({ status : "A" }) #推荐使用
    删除status等于D的一个文档
    db.inventory.deleteOne( { status: "D" } ) #推荐使用

注意

  • 删除数据库的时候,切记要先切换到该数据库才能删除
    use db_name
    db.dropDatabase()
  • MongoDB偏向于易用性,默认是没有开启用户权限的.
  • 每次执行完程序,都可以返回shell模式查看结果
    输入 db.student.find()
  • 3.4版新增功能
    下面的命令插入123.40作为 NumberDecimal具有和不具有周围的值引号:
    db.json.insert({ decimalQuoted : NumberDecimal("123.40") })

python与MongoDB的交互

  1. 创建数据库
    import pymongo
    client = pymongo.MongoClient('localhost', 27017) 或
    client = MongoClient('mongodb://localhost:27017/')
  2. 连接数据库
    db = client.db_name 或 db = client"db_name"']
  3. 连接集合
    collection = db.collection_name 或 collection = db['collection_name']
  4. 查看数据看下所有集合名称
    db.collection_names()
  5. 插入数据
    collection.insert()
  6. 查看集合数据的总数
    collection.find().count()
  7. 查询结果排序
collection.find().sort("key1") # 默认为升序  
collection.find().sort("key1", pymongo.ASCENDING) # 升序  
collection.find().sort("key1", pymongo.DESCENDING) # 降序  
collection.find().sort([("key1", pymongo.ASCENDING), ("key2", pymongo.DESCENDING)])   #多列排序

感谢您的阅读,以上是本人遇到过或学习过程记录的笔记,水平有限,仅供参考,如果发现错误请及时联系作者,谢谢!

欢迎进我的个人博客Danniel'S,不定时更新,祝
共同进步!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容