mongodb数据库的常用操作命令

导入模块:

from pymongo import MongoClient

创建一个客户端链接:

client = MongoClient()#里面定义ip和port

选择要操作的数据库的集合:

col = client['py']['test']

插入一条记录,需要传入一个字典即可

col.insert({"name": "py5"}) # insert具有多个属性  insert_one;insert_many;单个或者多个

插入多条记录需要传入一个列表,元素项为字典

col.insert([{"name": "小王", "age": 18}, {"name": "小红", "age": 20}])

更新文档;分别有一下几个参数:
1. 条件
2. 更新的内容
3. multi参数表示是否更新多条数据,默认是false(参数multi:可选, 默认是false,表示只更新找到的第⼀条记录, 值为true表示把满⾜条件的⽂档全部更新)

col.update({"age": 18}, {"$set": {"name": "小明"}}, multi=False)

删除文档:以下参数;
1. 条件
2. multi参数表示是否删除多条满足的文档 默认false

col.remove({"age": 18}, multi=False)

遍历取出集合中的每条数据

# ret = col.find()
# for x in ret:
#     print(x)

新建一个数据库

stu = client['py']['stu']

插入新的数据:
插入的数据是一个列表包裹的字典为元素注意字典与字典之间用“逗号”

insert_list = [{'name': '段誉', 'hometown': '⼤理', 'age': 16, 'gender': False},
               {'name': '洪七公', 'hometown': '华⼭', 'age': 18, 'gender': True},
               {'name': '⻩蓉', 'hometown': '桃花岛', 'age': 18, 'gender': False},
               {'name': '华筝', 'hometown': '蒙古', 'age': 18, 'gender': False},
               {'name': '郭靖', 'hometown': '蒙古', 'age': 20, 'gender': True},
               {'name': '⻩药师', 'hometown': '桃花岛', 'age': 40, 'gender': True},
               {'name': '段王爷', 'hometown': '⼤理', 'age': 45, 'gender': True}]

插入以上数据列表中的数据

 stu.insert(insert_list)

查询age=20的记录:

ret = stu.find({"age": 20})

查询所有age<=20的记录:

#lte 小于等于
ret = stu.find({"age": {"$lte": 20}})

查询所有age>20 的记录

#gt大于
ret = stu.find({"age": {"$gt": 20}})
#lt 小于
#lte 小于等于
#gt 大于
#gte 大于等于
#ne 不等于
# 逻辑预算符,and关系
# ret = stu.find({"age": 18, "gender": False})
# 逻辑预算符,or关系
# ret = stu.find({"$or": [{"age": 18}, {"gender": False}]})
# ret = stu.find({"$or": [{"age": {"$gte": 18}}, {"gender": False}]})
# 范围运算符 in
# ret = stu.find({"age": {"$in": [18, 20]}})


# 翻页 skip 跳过  limit 选中
# ret = stu.find()
# for x in ret:
#     print(x)
#
# print("*" * 100)
#
# ret = stu.find().skip(3).limit(2)
# for x in ret:
#     print(x)

# 投影,约束需要显示的字段
# ret = stu.find({}, {"_id": 0, "name": 1, "hometown": 1})

# 排序 1升序,-1降序
import pymongo

# ret = stu.find().sort([("age", pymongo.ASCENDING), ("gender", pymongo.DESCENDING)])


# 统计个数 count中只能计数
# ret = stu.find({"age": {"$lt": 18}}).count()
# print(ret)

# 筛选数据并去重,返回的是一个去重后的列表
# ret = stu.distinct("hometown", {"age": {"$gt": 20}})

# $group分组  "_id"分组的依据   $sum:1统计组内个数, $sum:$age 组内的年龄求和  $push 数据透视,组内元素放入一个列表中
# ret = stu.aggregate(
#     [{"$group": {"_id": "$hometown", "count": {"$sum": 1}, "age": {"$sum": "$age"}, "name": {"$push": "$name"}}}])

# 多个字段进行分组
# ret = stu.aggregate([{"$group": {"_id": {"性别": "$gender", "姓名": "$name"}}}])

# ret = stu.aggregate([
#     {"$match": {"age": {"$gt": 20}}},
#     {"$group": {"_id": {"gender": "$gender", "hometown": "$hometown"}}},
#     {"$project": {"_id": 0, "性别": "$_id.gender", "故乡": "$_id.hometown"}},
#     {"$group": {"_id": "$性别", "人数": {"$sum": 1}}}])

# ret = stu.aggregate([{"$group": {"_id": "$hometown", "count": {"$sum": 1}}},
#                      {"$sort": {"count": pymongo.ASCENDING}},
#                      {"$skip": 1},
#                      {"$limit": 2}])

# for x in ret:
#     print(x)
#
# 设置索引,1.提升查找效率,2数据去重
# stu.create_index()
# stu.ensure_index([("name", pymongo.ASCENDING)], unique=True)
# 获取索引,并美化打印
# x = stu.index_information()
# print(json.dumps(x, indent=2))

# 设置复合索引实现数据去重
# stu.ensure_index([("name", pymongo.ASCENDING), ("age", pymongo.DESCENDING)])


猜你喜欢

转载自blog.csdn.net/weixin_44090435/article/details/86509215
今日推荐