ITPub博客

首页 > 数据库 > 数据库开发技术 > MongoDB入门教程

MongoDB入门教程

原创 数据库开发技术 作者:小安 时间:2020-02-20 22:41:44 0 删除 编辑

Hello,大家好!我是小安Sir,上班忙碌了一天,终于可以好好写篇文章了。咦,我今天做了什么?我没有划水,我绝对没有划水!


我最近看了一本Python和MongoDB相关的书,乍一看我觉得很简单,再乍一看,好像是这么回事,我骄傲地点了点头,yy之中我已经掌握这本书的内容,难道我有九阳神功?

好吧,回归主题,讲讲一些MongoDB的入门活


本文大纲

Attention

    1. Robo 3T

    2. MongoDB快速入门

    3. Python连接MongoDB 

    4. Python操作MongoDB



Robo 3T

01



1.1 打开Robo官网

https://robomongo.org/


1.2 安装Robo 3T

安装Robo 3T 就可以使用图形界面,方便操作MongoDB数据库,这个软件安装实在是太简单了,我就放几张图喔,就几张,哈哈哈!




Robo 3T到此安装完毕,实在是太简单了。


Robo 3T 连接Win10的MongoDB,Linux也应该没问题的,我就不演示了!目前小安我专注Python操作MongoDB就行了,以后有机会写篇通过Python操作Linux的MongoDB。


创建数据库


数据库名字为ipart(爱情公寓),最近在看这部电视剧,疯狂刷1-5。


新建一张表,表名为performer(演员?简单点...说话的方式简单点),突然想唱歌。

Come some up music ...




MongoDB 快速入门

02


3.1 插入—Insert

为什么不是先讲查询?如果不先讲插入数据,哪来数据供查询呢!一切尽在我的掌握之中,嘿嘿!


3.1.1 InsertOne

顾名思义,插入一条数据。

db.getCollection('performer').insertOne({'name':'小安','sex':'man','age':19,'job':'不自由学习者','story':'爱情公寓的隔壁','best_wishes':'不清楚'})



3.1.2 InsertMany

顾名思义,一下子插入N条数据。

db.getCollection('performer').insertMany([
{'name':'胡一菲','sex':'woman','age':23.5,'job':'弹一闪教师','story':'爱情公寓','best_wishes':'不清楚',},
{'name':'陈美嘉','sex':'woman','age':23,'job':'宠物店专员','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'唐悠悠','sex':'woman','age':22,'job':'专业演员','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'林宛瑜','sex':'woman','age':20,'job':'林氏才女','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'秦羽墨','sex':'woman','age':23,'job':'有钱人的追求者','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'诸葛大力','sex':'woman','age':19,'job':'最强大脑','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'咖喱酱','sex':'woman','age':19,'job':'吃货','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'张大炮','sex':'man','age':25,'job':'二营长的大炮','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'吕子乔','sex':'man','age':26,'job':'鼓励师','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'曾小贤','sex':'man','age':27,'job':'电台主持人','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'关谷神奇','sex':'man','age':27,'job':'漫画家','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'白开','sex':'man','age':100,'job':'小黑','best_wishes':'不清楚'},
{'name':'陆展博','sex':'man','age':21,'job':'外星人','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'张益达','sex':'man','age':29,'job':'倒霉的好人','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'斯内克','sex':'man','age':99,'story':'爱情公寓','best_wishes':'不清楚'},
{'name':'赵海棠','sex':'man','age':22,'job':'大文豪','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'张伟','sex':'man','age':26,'job':'律政先锋','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'小则又沐风','sex':'woman','age':21,'job':'吕子乔的虚幻情人','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'吕小布','sex':'man','age':25,'job':'僚机吕布'}
])



3.2 查询—find

以下出现查询数据的截图,均来自每块代码的最后一条查询语句。

3.2.1 查找数据

# 查找全部数据
# 类似关系型数据库:" select * from performer "
db.getCollection('performer').find()
db.getCollection('performer').find({})


3.2.2 查询指定条件的数据

# 满足一个条件
# 类似关系型数据库:" select * from performer where age=20 "
db.getCollection('performer').find({'age':20)
# 同时满足两个条件
# 类似关系型数据库:" select * from performer where age=20 and sex='woman' "
db.getCollection('performer').find({'age':20,'sex':'woman'})



3.2.3 查询指定范围的数据

简单说下限定范围查询的"暗号"

大于等于 : gte
少于等于 : lte
大于     : gt
少于     : lt
不等于   : ne
等于     : 你猜猜看


一般格式为{列:值},如果在"值"里面再套个{},那么就可以用于限定范围。这真是懒出智慧啊,多简单啊!

# 查询年龄>=25的数据
# 类似关系型数据库:" select * from performer where age>=25 "
db.getCollection('performer').find({'age':{'$gte':25}})

# 查询21>年龄<25的数据
# 类似关系型数据库:" select * from performer where age>21 and age<25 "
db.getCollection('performer').find({'age':{'$lt':25,'$gt':21}})

# 查询21>年龄<25且名字不等于"小则又沐风"的数据
# 类似关系型数据库:" select * from performer where age>21 and age<25 and name not in ('小则又沐风') "
db.getCollection('performer').find({'age':{'$lt':25,'$gt':21},'name':{'$ne','小则又沐风'}})



3.2.4 查询限定列

({ })代表所有数据,如果在{ }旁边加个逗号,不就是说明"桥多码爹,还未结束",还有操作要进行。0代笔不显示指定列,1代表显示指定列。_id列默认是会显示出来的,虽然_id非常重要,但MongoDB内部知道就行。为了美观,当然可以通过 0 排除。

# 查询数据但不返回列story,age
# 类似关系型数据库:" select _id,name,sex,job,best_wishes from performer "
db.getCollection('performer').find({},{'story':0,'age':0})

# 查询数据只返回列 name, age,但不返回object_id
# 类似关系型数据库:" select name,age from performer "
db.getCollection('performer').find({},{'name':1,'age':1,'_id':0}).limit(5)



3.2.5 其他

count要在查询结果出来之后再.count,限定范围也是要在查询结果出来之后再.limit(行数),sort 列的值为1,则正序;值为-1,则倒序。

# 查询年龄大于21岁的个数
# 类似关系型数据库:" select count(*) from performer where age > 21 "
db.getCollection('performer').find({'age':{'$gt':21}}).count()

# 限定返回3条数据
# 类似关系型数据库:" select * from performer where rownmum <=3 "
db.getCollection('performer').find({}).limit(3)

# 对查询年龄少于24的结果进行倒序排序
# 类似关系型数据库:" select * from performer where age < 21 order by age desc "
db.getCollection('performer').find({'age':{'$lt':24}}).sort({'age':-1})



3.3 更新—update

MongoDB的更新非为updateOne和updateMany,目前还有新的功能,后续会在MongoDB高级用法的篇章提及,敬请期待。


3.3.1 updateOne

更新一条符合条件的数据,如果有多条数据符合,则从上往下开始更新,一次更新一条。

# 类似关系型数据库:" update performer set age = 100 where name ='张益达' "
db.getCollection('performer').updateOne({'name':'张益达'},{'$set':{'age':100}})



3.3.2 updateMany

一次性更新所有符合条件的数据。

# 类似关系型数据库:" update performer set story = '爱情公寓1-5',
                                  best_wishes = '感谢陪伴,赞!' where story = '爱情公寓' "
db.getCollection('performer').updateMany({'story':'爱情公寓'},{'$set':{'story':'爱情公寓1-5','best_wishes':'感谢陪伴,赞!'}})



3.4 删除—delete

MongoDB的更新非为deleteOne和deleteMany。


3.4.1 deleteOne

删除一条符合条件的数据,如果有多条数据符合,则从上往下开始删除,一次删除一条。

# 类似关系型数据库:" delete from performer where name ='小安' "
db.getCollection('performer').deleteOne({'name':'小安'})



3.4.2 deleteMany

一次性删除所有符合条件(sex='man')的数据。

# 类似关系型数据库:" delete from performer where sex ='man' "
db.getCollection('performer').deleteMany({'sex':'man'})



Python连接MongoDB

03



照葫芦画瓢,IP加端口就可以了。

1from pymongo import MongoClient
2client = MongoClient('mongodb://127.0.0.1:27017')
3print(client)
4# MongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True)


Python操作MongoDB

04



没有精力写了,请见下篇文章,据说很长很长。


恭喜我,可以洗洗睡了!


这都可以啊,你偷懒!

浓缩就是精华,懂不懂啊!


往期回顾

Python切割文件教程一 | 我的“大马士革命刀"

Python切割文件教程二 | 我的“大马士革命刀"不Like补刀

Django博客教程一  |  Django架构介绍

Django博客教程二  |  Django入门版博客

Django博客教程三  |  Django进阶版博客数据篇

Django博客教程四  |  Django进阶版博客网页篇


Python

自动化运维

长按识别左侧二维码,

关注Python自动化运维喔~


原文作者:Python自动化运维;如有侵权,请联系管理员删除。

上一篇: Python操作MongoDB
请登录后发表评论 登录
全部评论

注册时间:2018-10-07

  • 博文量
    47
  • 访问量
    17923