pymongo

一、安装

conda install pymongo

二、使用

1、连接

from pymongo import MongoClient

client = MongoClient(host='ip', port=27017)
# 使用方括号的方式选择数据库和集合
collection = client['db3']['stu']

2、插入数据

 

# 1. 插入一条数据
ret = collection.insert_one({"name": "tom", "age": 24})
# 打印_id的值
print(ret.inserted_id)
# 2. 插入多条数据
stu_lst = [{"name": "test{}".format(i), "age": 18 + i} for i in range(10)]
ret = collection.insert_many(stu_lst)
# 打印所有_id的值
print(ret.inserted_ids)

注意: 在插入多条数据的情况下,使用insert_many(效率高),而不是使用insert_one + for循环

 

3、更新数据

# 1. 更新一条数据
collection.update_one({"name": "tom"}, {"$set": {"age": 100}})
# 2. 更新多条数据
ret = collection.update_many({"name": "tom"}, {"$set": {"age": 18}})
# 3. 匹配的数据条数
print(ret.matched_count)
# 4. 影响的数据条数
print(ret.modified_count)

 

4、查找数据

 

# 1. 查找一条数据
ret = collection.find_one({"name": "tom"})
print(ret)
# 2. 查找多条数据
ret = collection.find({"name": "tom"})
for i in ret:
    print(i)

注意:
查找数据和读取文件一样,游标在移动,只能遍历一次,相当于生成器
ret = collection.find() # 查找所有数据
data_list = list(ret)   # 强转,获取list
data_list的格式[{}, {}, {}, {}]

 

根据ObjectId查找

from bson import ObjectId
ret = collection.find_one({"_id": ObjectId("5dde12dc4141a75e1a102d80")})
print(ret)

条件

 

$lt     小于              {"age": {"$lt": 20}}
$gt     大于              {"age": {"$gt": 20}}
$lte    小于等于           {"age": {"$lte": 20}}
$gte    大于等于           {"age": {"$gte": 20}}
$ne     不等于             {"age": {"$ne": 20}}
$in     在范围内           {"age": {"$in": [18, 20]}}
$nin    不在范围内         {"age": {"$nin": [18, 20]}}
$regex  匹配正则表达式      {"name": {"$regex": '^M*'}}     # name以M开头  
$exists 属性是否存在        {"name": {"$exists": True}}     # name属性存在
$type   类型判断            {"age": {"$type": "int"}}       # age的类型为int
$mod    数字模操作          {"age": {"$mod": [5, 0]}}     # 年龄模5余0
$text   文本查询           {"$text": {"$search": "Mike"}}   # text类型的属性包含Mike字符串
$where  高级条件查询        {"$where": "obj.fans_count == obj.follows_count"}     # 自身粉丝数等于关注数

 

计算数量

collection.find().count()

排序

collection.find().sort('name', pymongo.ASCENDING)
# pymongo.ASCENDING  升序排序
# pymongo.DESCENDING 降序排序 

偏移

collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)

5、删除数据

 

# 1. 删除一条数据
collection.delete_one({"name": "test1"})
# 2. 删除多条数据
ret = collection.delete_many({"name": "tom"})
# 3. 删除数据的条数
print(ret.deleted_count)

你可能感兴趣的