首页 > 数据库 >Python操作MongoDB

Python操作MongoDB

时间:2022-11-10 21:32:34浏览次数:44  
标签:name Python MongoDB age db collection user 操作 find


一 安装 pymongo


pip install pymongo==3.4 导入 MongoClient from pymongo import MongoClient


 

二 连接MongoDB数据库


MongoDB端口号:27017 连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,第二个参数为端口port,端口如果不传默认是27017。 conn= MongoClient("localhost")


三 选择数据库


连接数据库   db = conn.数据库名 连接集合 collection = db['表名'] or collection = db.表名 查看表   db.collection_names()


四 INSERT 数据的插入

(1) 插入一条数据

db.collection.insert({'name':'大坏蛋','age':23})

插入成功:返回ID

(2) 插入多条

db.collection.insert([{'name':'大坏蛋','age':23},{'name':'猪队友','age':30}])

插入成功:返回ID的列表

[ObjectId('5a1642c4b96166349c2963eb'), ObjectId('5a1642c4b96166349c2963ec')]

(3) 3.2以上的插入函数

db.collection.insert_one() 插入一条数据

db.collection.insert_many() 插入多条数据,插入成功:返回obj

(4) 3.2以上获取插入的id

db.collection.insert_one()返回的就是id

res = db.collection.insert_many() #返回的是对象

可以通过res.inserted_ids获取插入多条的ID

五 find 查询

(1) find 查询


res = db.user.find() #返回的是游标对象 使用next() 方法 进行取值 print(res.next()); print(list(res)); #显示全部 #遍历 for obj in res:   print(obj)


(2) 查询一条


res = db.user.find_one(条件) #返回一条记录


(3) 条件查询


res = db.user.find({"name":"张三"}) for obj in res:   print(obj)


(4)id查询


from bson.objectid import ObjectId* #用于ID查询 data = db.user.find({"_id":ObjectId("59a2d304b961661b209f8da1")})


(5)模糊查询

MongoDB查询条件可以使用正则表达式,从而实现模糊查询的功能。模糊查询可以使用$regex操作符或直接使 用正则表达式对象。

  1. $regex
  2. re.compile()
    import re 使用 re.compile()

MySQL

MongoDB

select * from student where name like ’%joe%’

db.student.find({name:{"$regex":"坏"}})

select * from student where name regexp ’joe’

db.student.find({"name":re.compile("坏"))

import re data = db.user.find({"name":{"$regex":"五"}}) data = db.user.find({"name":re.compile("五")})

注意 当匹配类型为 不是字符串的类型的时候 匹配不出来 data = db.user.find({"age":re.compile("30")}) data = db.user.find({"age":{"$regex":"3"}}) ret = collection.find({'name':re.compile(r'^郭')})

 

(6) sort 排序


#sort 排序 data = db.user.find().sort("age",1) #按照年龄升序 data = db.user.find().sort("age",-1) #按照年龄降序 for i in data:     print(i)


(7) limit 取值


#limit 取值 print(next(db.user.find().sort("age",-1).limit(1))) #取出年龄最大的一条数据


(8) skip 跳过


#skip   跳过最大值 取第二大值 print(next(db.user.find().sort("age",-1).skip(1).limit(1))) #取出年龄最大的一条数据


 

六 update 修改

(1) db.collection.update(条件,更改)


data = db.user.update({"name":"潘金莲"},{"$inc":{"age":2}})  #累加修改 data = db.user.update({"name":"潘金莲"},{"$set":{"age":2}})  #直接修改 更改成功 返回 数据:{'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}


(2) update_one() 修改一条数据


data = db.user.update_one({"name":"王五"},{"$set":{"age":20}})


(3) update_many() 修改多条数据


data = db.user.update_one({"name":"王五"},{"$set":{"age":20}})  #修改多条


(4) update_one 和 update_many 返回匹配条数和修改的条数


result.matched_count 返回匹配条数 result.modified_count   返回修改的条数


七 remove 删除

(1) remove 匹配到的全部删除

db.collection.remove({条件})

(2) 删除全部数据

db.collection.remove()

(3) 依然存在两个新的推荐方法


delete_one()和delete_many()方法,示例如下: delete_one()即删除第一条符合条件的数据 collection.delete_one({“name”:“ Kevin”}) delete_many()即删除所有符合条件的数据,返回结果是DeleteResult类型 result = collection.delete_many({“age”: {'$lt':25}}) 可以调用deleted_count属性获取删除的数据条数。 result.deleted_count


八 关闭数据库链接

conn.close()

标签:name,Python,MongoDB,age,db,collection,user,操作,find
From: https://blog.51cto.com/u_15707053/5842147

相关文章

  • 电影推荐系统项目实战:环境配置与搭建:Linux环境下 MongoDB的配置与安装 ----- centos7
    1.在主机中下载好Linux版本的MongoDB压缩包:连接如下:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.3.tgz 2.打开VM,启动虚拟机(这里是hadoop102)......
  • 测试遇到的代码(python)
    目录:   第一部分:1、SSTI类型importflaskimportosapp=flask.Flask(__name__)app.config['FLAG']=os.environ.pop('FLAG')@app.route('/')definde......
  • Python中__new__方法的详细教程
    只有继承于object的新式类才能有__new__方法,__new__方法在创建类实例对象时由Python解释器自动调用,一般不用自己定义,Python默认调用该类的直接父类的__new__方法来构造该类......
  • 神操作 之 远程调试 WebView 定位加载缓慢的坑。。。
    甜的时候,甜到让人不敢相信。苦的时候,苦到让你日夜无眠。前言事情的缘由,因为老韩某天贱嗖嗖的说,来,你搜下那个课程,现在免费,原价好几百,请你看。ummm,原谅我的年少无知太单纯,......
  • 神操作 之 Mac OS prompt_status:5:command not found:wc
    没有彩排,一切都是Now。前言搞了个手机,想着刷成Android10嗨皮一波,验证下项目在Android10的运行情况,But,系统镜像下载完成按照Google第一步就提示出现问题,直接提示ad......
  • 变量初始化与数据批量操作
    在tensorflow中通过tf.Variable()添加变量,变量就是在tensorflow程序运行中不断改变的量,也就是“学习”的过程,通过改变变量来降低loss  所有变量在进行图操作前,一定要进......
  • 操作系统实验:Shell脚本编程与Vim编辑器
    SHANGHAIUNIVERSITY操作系统(一)实验报告组号第4组学号姓名20120889实验序号实验六日期2022年9月10日一、实验目的与要求实验目的:掌握v......
  • MongoDB集群之复制集,分片
    目录1集群1.1简介1.2复制集1.2.1简介1.2.2复制集设置1.2.2.1创建目录并启动1.2.2.2配置及初始化1.2.2.3操作节点1.2.2.4不正常关闭服务1.3分片1.3.1简介1.3.2......
  • ffmpeg常用操作
    音频常用操作常见的ffmpeg音频参数常用参数解释: -i表示input,即输入文件 -f表示format,即输出格式 -vn表示vedionot,即输出不包含视频 -ar设定采样率 -ac......
  • 菜鸡学Unity 之 Unity中对游戏物体的常用操作旋转移动放缩
    LZ-Says:愿时光依旧,美好前方~前言本小节,我们一起来看下Unity中对游戏物体的常用操作旋转移动放缩这些基本骚操作吧~基本骚操作全程都可以简单操纵鼠标完成,当然,直接有效是......