PyMongo

安装:

pip install pymongo

创建数据库(先装好MongoDB,并且启动):

import pymongo
 
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['school']

检查数据库是否已存在:

dblist = myclient.list_database_names()
# dblist = myclient.database_names()
# database_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_database_names()。 if 'school' in dblist: print("数据库已存在!")

创建集合(表):

mycol = mydb["children"]

判断集合是否存在:

collist = mydb. list_collection_names()
# collist = mydb.collection_names()
if "children" in collist:   # 判断 children 集合是否存在
  print("集合已存在!")

数据库操作:

增:

# 增加一条数据
children = { 'name': '小米', 'age': 8, 'score': 72 } a = mycol.insert_one(children)
# print(x.inserted_id) 输出插入后对象的id

 

看到数据库已经插入成功

 

 

# 增加多条数据
children = [{
    'name': '小米',
    'age': 8,
    'score': 72
},{
    'name': '小明',
    'age': 9,
    'score': 54
},{
    'name': '小红',
    'age': 10,
    'score': 62
},{
    'name': '小刚',
    'age': 11,
    'score': 88
}]

a = mycol.insert_many(children)
print(a.inserted_ids)

# 输出
[ObjectId('5efebd97495b81bcb755df95'), ObjectId('5efebd97495b81bcb755df96'), ObjectId('5efebd97495b81bcb755df97'), ObjectId('5efebd97495b81bcb755df98')]

 

 

 插入成功

如果要自定义id则在对象里加入属性'_id'

查:

# 查一个
c = mycol.find_one()
# 查所有
a = mycol.find()
for item in a:
    print(item)

#输出
{'_id': ObjectId('5efd8794fafed20bb1930488'), 'name': '小米', 'age': 8, 'score': 72}
{'_id': ObjectId('5efebd97495b81bcb755df95'), 'name': '小米', 'age': 8, 'score': 72}
{'_id': ObjectId('5efebd97495b81bcb755df96'), 'name': '小明', 'age': 9, 'score': 54}
{'_id': ObjectId('5efebd97495b81bcb755df97'), 'name': '小红', 'age': 10, 'score': 62}
{'_id': ObjectId('5efebd97495b81bcb755df98'), 'name': '小刚', 'age': 11, 'score': 88}
# 在 find() 中设置参数来过滤数据
x = mycol.find({'name': '小红'})
for item in x:
    print(item)

#输出
{'_id': ObjectId('5efebd97495b81bcb755df97'), 'name': '小红', 'age': 10, 'score': 62}

# 对查询结果设置指定条数的记录可以使用 limit() 方法
x = mycol.find().limit(3)
for item in x:
    print(item)
# 输出 {
'_id': ObjectId('5efd8794fafed20bb1930488'), 'name': '小米', 'age': 8, 'score': 72} {'_id': ObjectId('5efebd97495b81bcb755df95'), 'name': '小米', 'age': 8, 'score': 72} {'_id': ObjectId('5efebd97495b81bcb755df96'), 'name': '小明', 'age': 9, 'score': 54} # 正则表达式查询,正则表达式修饰符只用于搜索字符串的字段 x = mycol.find({'name':{'$regex':''}}) for item in x: print(item) # 输出 {'_id': ObjectId('5efebd97495b81bcb755df96'), 'name': '小明', 'age': 9, 'score': 54}
# 类似正则表达式的条件还有
$lt小于{'age': {'$lt': 20}}
$gt大于{'age': {'$gt': 20}}
$lte小于等于{'age': {'$lte': 20}}
$gte大于等于{'age': {'$gte': 20}}
$ne不等于{'age': {'$ne': 20}}
$in在范围内{'age': {'$in': [20, 23]}}
$nin不在范围内{'age': {'$nin': [20, 23]}}
$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'}自身粉丝数等于关注数
# 这些操作的更详细用法在可以在MongoDB官方文档找到:
https://docs.mongodb.com/manual/reference/operator/query/

 

改:

myquery = {"name": '小红'} #条件
newvalues = {"$set": {"age": 13,"score": 100}} #修改
# 更新一条数据
mycol.update_one(myquery, newvalues)
# 更新全部数据
mycol.update_many(myquery, newvalues)

删:

myquery = { "name": "小明" }
# 删除一个
mycol.delete_one(myquery)
# 删除多个
x = mycol.delete_many(myquery)
# deleted_count是删除的个数
print(x.deleted_count, "个文档已删除")
# delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档
# drop()是删除一个集合(表)
mycol.drop()

排序:

s = mycol.find().sort("age")
# mycol.find().sort("age",-1) 降序
for x in s: print(x) #输出 {'_id': ObjectId('5efd8794fafed20bb1930488'), 'name': '小米', 'age': 8, 'score': 72} {'_id': ObjectId('5efebd97495b81bcb755df95'), 'name': '小米', 'age': 8, 'score': 72} {'_id': ObjectId('5efebd97495b81bcb755df96'), 'name': '小明', 'age': 9, 'score': 54} {'_id': ObjectId('5efebd97495b81bcb755df98'), 'name': '小刚', 'age': 11, 'score': 88} {'_id': ObjectId('5efebd97495b81bcb755df97'), 'name': '小红', 'age': 13, 'score': 100}

 

posted @ 2020-07-03 13:49  略略略额  阅读(193)  评论(0)    收藏  举报