Python笔记之利用pymongo对MongoDB进行增删改查

一、目标

使用pymongo模块,对MongoDB进行增加、删除、查、修改数据。

二、试验平台

windows7 , python3.7, mongodb4.0.6,  pymongo3.7.2

用到的模块pymysql,如果没有的话,就pip安装pymongo

三、让python3.7连接mongodb。(这是主要代码,下面一个示例是完整代码)

from pymongo import MongoClient

# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)
# #连接数据库
db = conn.xmongodb
# #获取集合
collection = db.student

四、利用pymongo向MongoDB中插入一条数据。完整代码如下:

注意,貌似python3.5或者更早版本,插入语句要用collection.insert(),而非现在的collection.insert_one(),

报错提示:DeprecationWarning: insert is deprecated. Use insert_one or insert_many instead.

还有,在mongodb的CLI工具下插入数据是,键是无需加双引号的,而在python中,键貌似得加双引号。

from pymongo import MongoClient


# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student

# #添加文档
collection.insert_one({"name": "笑笑2", "age": 5, "gender": 0, "address": "静安", "isDelete": 0})

# #断开连接
conn.close()

五、插入多条数据。完整代码如下:

from pymongo import MongoClient


# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student

# #添加文档
collection.insert_many([{"name": "笑笑3", "age": 18, "gender": 0, "address": "西安", "isDelete": 0},
                       {"name": "笑笑5", "age": 19, "gender": 0, "address": "福建", "isDelete": 0},
                       {"name": "笑笑6", "age": 20, "gender": 0, "address": "洛阳", "isDelete": 0}])

# #断开连接
conn.close()

六、查询数据。完整代码如下:

from pymongo import MongoClient


# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student

# result = collection.find()   # #查询所有文档
# #查询部分文档
result = collection.find({"age": {"$gt": 30}})
for row in result:
    print(row)

# #查询年龄大于30的有多少个
result2 = collection.count_documents({"age": {"$gt": 30}})
print("有{0}个符合条件的".format(result2))

# #断开连接
conn.close()

结果如下:

七、根据ID查询  (要另引入模块),完整代码如下:

from pymongo import MongoClient
from bson.objectid import ObjectId  # #这玩意用于mongodb的根据ID查询


# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student


# #根据ID查询
result = collection.find({"_id": ObjectId("5c8a56e1759918e581de2311")})
print(result)
print(result[0])

# #断开连接
conn.close()

输出结果如下:

<pymongo.cursor.Cursor object at 0x0000000002ED71D0>
{'_id': ObjectId('5c8a56e1759918e581de2311'), 'name': '徐子欣', 'age': 3.0, 'gender': 1.0, 'address': '天津南开区', 'isDelete': 0.0}

 

八、升序排列,完整代码如下:

from pymongo import MongoClient


# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student

result = collection.find().sort("age")   # #查询所有文档,按照年龄age升序排列显示
for row in result:
    print(row)


# #断开连接
conn.close()

 

九、降序排列

注意要另导入pymongo模块,完整代码如下:

from pymongo import MongoClient
import pymongo

# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student
# result = collection.find().sort("age")  # #按照年龄age升序排列显示。
# #查询所有文档,按照年龄age降序排列显示
result = collection.find().sort("age", pymongo.DESCENDING)   
for row in result:
    print(row)


# #断开连接
conn.close()

 

十、分页查询

越过几条,显示几条。完整代码如下:

from pymongo import MongoClient


# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student

# #分页显示
result = collection.find().skip(2).limit(3)   # #越过2条,选3条
for row in result:
    print(row)


# #断开连接
conn.close()

 

十一、更新一条数据

完整代码如下:

from pymongo import MongoClient


# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student

# #更新数据
result2 = collection.update_one({"name": "笑笑6"}, {"$set": {"address": "安阳"}})
print(result2)
'''
将名字叫“笑笑6”的那条数据的,地址address更改成“安阳”
'''
# #断开连接
conn.close()

 

十二、删除一条数据

完整代码如下:

注意,只要delete_one函数中的条件,无论键还是值写错,或者根本键值都不存在,python都不会报错。

强烈建议加条件,否则会将整个集合(表)都删除掉了。

from pymongo import MongoClient


# #连接服务器,127.0.0.1指的是本机ip, 27017指的是mongoDB端口,默认的就是27017
conn = MongoClient("127.0.0.1", 27017)

# #连接数据库
db = conn.xmongodb

# #获取集合
collection = db.student

# #删除一条数据
collection.delete_one({"name": "kahn"})  # #删除一条数据,条件是name=“kahn”的

# #断开连接
conn.close()

测试ok。

是我的飞行时间。

2019年3月14日23:01:39

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值