本篇仅作为代码记录
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# Author: RuiMing Lin
# DateTime: 2021/01/25 14:52
# Description: python连接MongoDB
# 1.连接MongoDB
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
# client = pymongo.MongoClient('mongodb://localhost:27017/')
# print(client)
# 2.指定数据库
db = client.test
# db = client['test']
# 3.指定集合
collection = db.students
# collection = db['students']
# print(collection)
# 4.准备数据
student1 = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
}
student2 = {
'id': '20170202',
'name': 'Mike',
'age': 21,
'gender': 'male'
}
student3 = {
'id': '20170103',
'name': 'Dannie',
'age': 22,
'gender': 'female'
}
student4 = {
'id': '20170204',
'name': 'Anne',
'age': 23,
'gender': 'female'
}
flag = False
# flag = True
if flag:
# 5.插入数据
# 不推荐使用insert。DeprecationWarning: insert is deprecated. Use insert_one or insert_many instead.
result = collection.insert(student1)
print(result) # 返回一个ID
result = collection.insert_one(student2)
# print(result)
print(result.inserted_id)
result = collection.insert_many([student3, student4])
# print(result)
print(result.inserted_ids)
flag = False
flag = True
if flag:
# 6.查询
result = collection.find_one({
'name': 'Mike'})
print(type(result))
print(result)
results = collection.find({
'age': 20})
print(results)
for result in results:
print(result)
'''
$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]}}
'''
results = collection.find({
'age': {
'$gt': 20}})
print(results)
for result in results:
print(result)
'''
$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'}
'''
results = collection.find({
'name': {
'$regex': '^M.*'}})
print(results)
for result in results:
print(result)
flag = False
# flag = True
if flag:
# 7.统计
count = collection.find().count()
print(count)
count = collection.find({
'age': 20}).count()
print(count)
flag = False
# flag = True
if flag:
# 8.排序
results = collection.find()
results = results.sort('name', pymongo.ASCENDING)
print([result['name'] for result in results])
flag = False
# flag = True
if flag:
# 9.偏移
results = collection.find().sort('name', pymongo.ASCENDING).skip(2)
print([result['name'] for result in results])
results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)
print([result['name'] for result in results])
flag = False
# flag = True
if flag:
# 10.更新
condition = {
'name': 'Dannie'}
student = collection.find_one(condition)
student['age'] = 25
result = collection.update(condition, student)
results = collection.find({
'name': 'Dannie'})
for result in results:
print(result)
flag = False
flag = True
if flag:
# 11.删除
result = collection.remove({
'name': 'Dannie'})
print(result)
result = collection.delete_one({
'name': 'Kevin'})
print(result)
print(result.deleted_count)
result = collection.delete_many({
'age': {
'$lt': 25}})
print(result.deleted_count)