资讯专栏INFORMATION COLUMN

Python3操作Mongodb简明易懂教程

lbool / 1877人阅读

摘要:单条记录插入江苏注意接下来的操作中会忽略掉数据库连接操作,直接写核心代码,请自行补上。江苏我们再随便插入点儿数据供下面操作使用。江苏北京上海王二麻广东条件查询只要将查询条件当做参数塞入即可筛选数据。王二麻删除全部数据慎用

Pymongopython的一个操作Mongodb的库。

下面我们直接简列出一些常用操作命令。

连接数据库

链接数据库需要提供一个地址和接口即可。首先还是要导入包。

from pymongo import MongoClient
conn = MongoClient("localhost",27017)

当然,你可以使用如下写法:

conn = MongoClient("mongodb://localhost:27017/")
创建数据库

mongodb不需要提前创建好数据库,而是直接使用,如果发现没有则自动创建。

db = conn.testdb

上面的语句,会创建一个testdb的数据库。但是,在没有插入数据的时候,该数据库在管理工具里面你是看不到的(不显示)。

插入数据

首先第一步我们先插入一条数据瞧瞧。

单条记录插入
from pymongo import MongoClient
conn = MongoClient("mongodb://localhost:27017/")
db = conn.testdb
db.col.insert({"name":"yanying","province":"江苏","age":25})

注意: 接下来的操作中会忽略掉数据库连接操作,直接写核心代码,请自行补上。

python控制台什么都没有发生,这就是成功的意思。使用管理工具查看数据库记录,的确包含了一条数据。

多条记录插入

Mongodb一次也可以插入多条数据

db.col.insert([
    {"name":"yanying","province":"江苏","age":25},
    {"name":"张三","province":"浙江","age":24},
    {"name":"张三1","province":"浙江1","age":25},
    {"name":"张三2","province":"浙江2","age":26},
    {"name":"张三3","province":"浙江3","age":28},
])
查询数据

下面我们将刚刚插入的数据查询出来。

单条查询

我们可以使用find_one()来查询一条记录。

db.col.find_one()

上面的语句可以查询出一条mongodb记录。记录中多出来的_id是Mongodb自动生成的唯一值。

{"_id": ObjectId("5925351ad92fac3250b9ae3f"), "name": "yanying", "province": "江苏", "age": 25}

我们再随便插入点儿数据供下面操作使用。(省略几万字)

查询所有

如果我们需要查询出所有的记录,则可以使用db.col.find()但是查出来的是一个结果资源集。

我们可以使用for来列出所有记录。

for item in db.col.find():
    print(item)

这样可以获取所有记录。

{"_id": ObjectId("5925351ad92fac3250b9ae3f"), "name": "yanying", "province": "江苏", "age": 25}
{"_id": ObjectId("592550e5d92fac0b8c449f87"), "name": "zhangsan", "province": "北京", "age": 29}
{"_id": ObjectId("592550f6d92fac3548c20b1a"), "name": "lisi", "province": "上海", "age": 22}
{"_id": ObjectId("59255118d92fac43dcb1999a"), "name": "王二麻", "province": "广东", "age": 30}
条件查询

只要将查询条件当做参数塞入即可筛选数据。

for item in db.col.find({"name":"yanying"}):
    print(item)

查询结果

{"_id": ObjectId("5925351ad92fac3250b9ae3f"), "name": "yanying", "province": "江苏", "age": 25}

当然还可以查询小于某个值的记录

for item in db.col.find({"age":{"$lt":25}}):
    print(item)

或者大于某个值的记录

for item in db.col.find({"age":{"$gt":25}}):
    print(item)
统计查询

上面的代码可以统计出所有的记录数量

db.col.find().count() // 4

或者加点儿条件

db.col.find({"age":{"$gt":25}}).count() //2
根据_id查询记录

_idmongodb自动生成的id,其类型为ObjectId,想要使用就需要转换类型。

python3中提供了该方法,不过需要导入一个库。

from bson.objectid import ObjectId

这样就可以直接使用_id进行查询啦。

collection.find_one({"_id":ObjectId("592550e5d92fac0b8c449f87")})
结果排序

只要将需要排序的字段放入sort方法即可,Mongodb默认为升序

db.col.find().sort("age")

不过你也可以加一些参数去改变排序的方式。比如倒序,不过要记得先导入pymongo

import pymongo
db.col.find().sort("UserName",pymongo.DESCENDING)

你还可以让他升序,尽管默认如此

for item in db.col.find().sort("age",pymongo.ASCENDING):
    print(item)
更新数据

更新数据很简单,只需要一个条件和需要更新的数据即可

db.col.update({"_id":ObjectId("59255118d92fac43dcb1999a")},{"$set":{"name":"王二麻33333"}})

结果如下:王二麻变成了王二麻33333

{"_id": ObjectId("59255118d92fac43dcb1999a"), "name": "王二麻33333", "province": "广东", "age": 30}
删除数据

删除数据使用remove()方法,如果方法带条件,则删除指定条件数据,否则删除全部

删除name为王二麻33333的用户。

db.col.remove({"name":"王二麻33333"})

删除全部数据(慎用

db.col.remove()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19025.html

相关文章

  • Python3操作Mongodb简明易懂教程

    摘要:单条记录插入江苏注意接下来的操作中会忽略掉数据库连接操作,直接写核心代码,请自行补上。江苏我们再随便插入点儿数据供下面操作使用。江苏北京上海王二麻广东条件查询只要将查询条件当做参数塞入即可筛选数据。王二麻删除全部数据慎用 Pymongo是python的一个操作Mongodb的库。 下面我们直接简列出一些常用操作命令。 连接数据库 链接数据库需要提供一个地址和接口即可。首先还是要导入包。...

    Jensen 评论0 收藏0
  • Python3 简明教程

    摘要:课程简介简明易懂的课程,不仅适用于那些有其它语言基础的同学,对没有编程经验的同学也非常友好。建议遵守以下约定使用个空格来缩进永远不要混用空格和制表符在函数之间空一行在类之间空两行字典,列表,元组以及参数列表中,在后添加一个空格。 showImg(https://segmentfault.com/img/bVCldE); 课程简介:简明易懂的 Python3 课程,不仅适用于那些有其它语...

    cyqian 评论0 收藏0
  • 给伸手党的福利:Python 新手入门引导

    摘要:如果你仍然无法抉择,那请选择,毕竟这是未来的趋势,参考知乎回答还是编辑器该如何选我推荐社区版,配置简单功能强大使用起来省时省心,对初学者友好。 这是一篇 Python 入门指南,针对那些没有任何编程经验,从零开始学习 Python 的同学。不管你学习的出发点是兴趣驱动、拓展思维,还是工作需要、想要转行,都可以此文作为一个参考。 在这个信息爆炸的时代,以 Python入门 为关键字搜索出...

    用户84 评论0 收藏0
  • 简明 MongoDB 入门教程

    摘要:在配置的时候使用绝对路径替代相对路径,有利于在排查故障时查找进程启动的目录。在添加授权用户和开启认证后,这些警告会自动消失。投影文档中字段为或真值表示包含,或假值表示排除,可以设置多个字段为或,但不能混合使用。 MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是「巨大无比」,可见开发组对 MongoDB 的定位。与关系型数据库不同,Mo...

    trilever 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<