python使用MongoDB

MongoDB

关注公众号“轻松学编程”了解更多。

一、MongoDB安装

官网

MongoDB下载:https://www.mongodb.com/download-center?jmp=nav#community

个人:

链接:https://pan.baidu.com/s/1gButSqvSjMPRstRcm60Lgw 密码:dhwi

二、重要概念

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

  • 数据库(database)
  • 集合(collection)
  • 文档
  • 默认端口:27017

三、启动数据库

要手动启动服务

  • mongod.exe --dbpath=xxx
  • mongo.exe

这里写图片描述

这里写图片描述

四、、MongoDB的基本操作

1、数据库操作
  • show dbs
  • use mydb
  • db或db.getName() 显示当前数据库
  • db.dropDatabase() 删除当前数据库
  • help
  • exit
2、集合操作
  • show collections
  • db.createCollection(“student”) #创建空集合
  • db.student.insert({name:“bill”,age:60,gender:1,address:“西雅图”,isDelete:0}) #如不存在student则会先创建
  • db.student.drop()
3、文档操作
  • 增加文档
db.student.insert({name:"bill",age:60,gender:1,
address:"广州",isDelete:0})

db.student.insert([{name:"robin",age:50,gender:1,
address:"北京",isDelete:0},{name:"jackma",age:50,gender:1,
address:"杭州",isDelete:0}])

db.student.save({name:"zarkberg",age:30,gender:1,
address:"硅谷",isDelete:0}) #无_id时为插入
  • 删除文档
db.student.remove({"name":"jackma"},{"justOne":1})
  • 修改文档
   #修改
   db.student.update({"name":"robin"},{$set:{"name":"lyh"}})
#新增
   db.student.update({"name":"jackma"},{$inc:{"age":5}})
    {"multi":true})
    #可选的还有upset,为true时代表没有匹配文档时插入一个新的文档
   "xiaozha", "age" : 30.0,  "gender" : 1.0, "address" : "硅谷", 
   "isDelete":0})
 #update中为$nc时,且有_id时为修改
4、查询
  • 条件查找

    • db.student.find() //查询全部
    • db.student.find({gender:1},{name:1,address:1})//gender为1的所有数据的name和address列
    • db.student.find({},{name:0,address:0})//所有数据的非name和非address列
    • db.student.findOne({gender:1}) #查询一条
  • 比较运算

    • db.student.find({age:{$gt:40}})
      • {$gt:40} 大于40
      • {$gte:40} 大于等于
      • {$lt:40} 小于40
      • {$lte:40} 小于等于40
      • {$eq:40} 等于40
      • {$ne:40} 不等于40
  • AND OR

    • db.student.find({age:{$gte:50},gender:1})  //条件and
      db.student.find({$or:[{address:"北京"},{address:"硅谷"},{age:{$gte:60}}]}) //北京或硅谷的或年龄>=60的
      
      db.student.find({age:{$gte:50},gender:1,$or:[{address:"北京"},
      {address:"硅谷"},{age:{$gte:60}}]}) //and与or结合
      

  • 整理结果

    • db.student.find().count() //条数
    • db.student.find().pretty() //格式化地显示结果
    • db.student.find().limit(3) //查询3条
    • db.student.find().sort({age:-1}) //按age降序排列,1为升序,-1为降序
    • db.student.find().skip(3) //跳过前3条
    • db.student.find().skip(6).limit(3) //数据分页:跳过前6条,然后取出3条,假设一页有3条,那么就相当于取第3页的数据
  • 注意事项

    • 区分大小写

五、图形化客户端

1、使用MongoChef

MongoChef非官方下载链接:https://pan.baidu.com/s/1XoAMrrm8Zw4ODm20NiABcQ 密码:g05r

2、新建连接:

这里写图片描述

3、sql编辑:

这里写图片描述

六、与Python的交互

1、导入模块

打开cmd窗口,输入命令:

pip install pymongo

代码:

import pymongo

conn = pymongo.MongoClient(host="127.0.0.1", port=27017)
db = conn.mydb
collection = db.student
'''
添加数据
'''
# 插入一个数据文档
collection.insert_one(
    {"name": "sirouyang", "age": 18, "gender": 1, "address": "广州市", "isDelete": 0}
)

# 插入多个数据文档
collection.insert_many([
    {"name": "小马哥", "age": 50, "gender": 1, "address": "大深圳", "isDelete": 0}
])

'''
查询数据
'''
# 查询文档个数
count = 0
for _ in collection.find():
    count += 1
print('文档个数',count)

# 查询全部
ret = collection.find()
print('全部数据',[r for r in ret])

# 查询年龄大于18的数据
ret = collection.find(
    {"age": {"$gt": 18}}
)
print('年龄大于18数据有',[r for r in ret])

# 查询年龄大于18且家住北京的数据
ret = collection.find(
    {
        "age": {"$gt": 18},
        "address": "北京"
    }
)
print('年龄大于18且家住北京有',[r for r in ret])

# 查询年龄大于40的,或30以下的硅谷人士
ret = collection.find(
    {
        "$or": [
            {"age": {"$gt": 40}},
            {"age": {"$lt": 30}, "address": "硅谷"}
        ]
    }
)
print('年龄大于40的,或30以下的硅谷人士有',[r for r in ret])

# 查询结果按姓名降序排列
ret = collection.find().sort("name", pymongo.ASCENDING)
print('按姓名降序排列',[r for r in ret])

# 取前5个文档
ret = collection.find().limit(5)
print('前5个文档',[r for r in ret])

# 查询第二页的三个文档
ret = collection.find().skip(3).limit(3)
for item in ret:
    print(type(item), item)

'''
修改数据
'''
# 执行更新:查询姓名为jobs的文档,姓名修改为"Steve Jobs",年龄减小20岁
ret = collection.update_one(
    {"name": "jobs"},
    {
        "$set": {"name": "Steve Jobs"},
        "$inc": {"age": -20}
    }
)

'''
删除数据
'''
# 移除文档:移除年龄在55以上的文档数据
ret = collection.delete_one(
    {"age": {"$gt": 55}}
)

# 关闭
conn.close()

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

公众号

关注我,我们一起成长~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东木月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值