Python之pymongo库

本篇仅作为代码记录

#!/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)

猜你喜欢

转载自blog.csdn.net/Orange_minger/article/details/113476150