yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • python基础

  • python高级

  • python模块

  • python设计模式

  • python数据结构与算法

  • django

  • django-DRF

  • flask

  • 自己设计开源pip包

    • 开源pip包制作步骤
    • Mongdb执行原生语句
      • pymongoRawQuery
      • 功能
        • 一、mongodb原生查询
        • 二、选择字段、操作、值、值类型以及逻辑符,生成nosql语句并查询数据
        • 1. 类型于其他连接mongo的筛选工具
        • 2. 支持常用操作符筛选
        • 三、获取mongo数据库结构(支持获取mongo数据库的表、集合以及类型结构)
      • 操作示例
        • 安装
        • nosql原生语句查询示例
        • 选择筛选条件查询示例
        • 获取mogno数据库结构
  • 自己设计开源项目

  • python小示例

  • python面试题

  • python
  • 自己设计开源pip包
YiZhang-You
2023-05-20
目录

Mongdb执行原生语句

# pymongoRawQuery

版本:1.0.1

作者:益章

邮件:yyz18071720400@163.com

微信:YiZhang_You

# 功能

# 一、mongodb原生查询

支持mongodb原生语句安全查询数据,拆分校验nosql语句并查询数据(支持find、findOne、sort、limit、skip等一些查询关键字,自动过滤敏感数据库集合以及相应的关键字)

# 二、选择字段、操作、值、值类型以及逻辑符,生成nosql语句并查询数据

支持通过选择字段、操作、值、值类型以及逻辑符,生成nosql语句并查询数据

# 1. 类型于其他连接mongo的筛选工具

# 2. 支持常用操作符筛选

conditional_operator

['$gt', '$gte', '$lt', '$lte', '$eq', '$ne', '$in', '$nin']  # 支持操作符

$gt: 大于
$gte: 大于等于
$lt: 小于
$lte: 小于等于
$eq: 等于
$ne: 不等于
$in: 包含
$nin: 不包含
1
2
3
4
5
6
7
8
9
10

logical_operatory

['$and', '$or', ''] 逻辑运算符

$and: 或
$or: 且
1
2
3
4

type

['int', 'str', 'date', 'obj_id', 'customize']

int: 整型
str: 字符串
date: 时间
obj_id: bsonId mognoid
customize: 自定义类型
1
2
3
4
5
6
7

# 三、获取mongo数据库结构(支持获取mongo数据库的表、集合以及类型结构)

# 操作示例

# 安装

pip install PyMongoRawQuery=1.0.1

# nosql原生语句查询示例

# 1. 连接
db = PyMongoRawQuery(host="127.0.0.1", port=27017, user="admin", pwd="admin123", database="test")

# 2. nosql语句
nosql = 'db.getCollection("col").find({"title" : /.*python.*/i})'

# 3. 查询返回接口
for i in db.raw_query(nosql):
    print(i)

"""
{'_id': ObjectId('642592a284000000a5006558'), 'title': 'Python教程', 'description': 'python1', 'by': 'bb', 'url': 'xx', 'tags': ['mongodb', 'database', 'NoSQL'], 'likes': 100.0}
"""
1
2
3
4
5
6
7
8
9
10
11
12
13

# 选择筛选条件查询示例

  """
  conditional_operator: ['$gt', '$gte', '$lt', '$lte', '$eq', '$ne', '$in', '$nin']  # 支持操作符
  logical_operator: ['$and', '$or', '']  # 或与运算
  type: ['int', 'str', 'date', 'obj_id', 'customize']  # 筛选字段类型

	固定格式: 
	[
		{
			"field":"字段名称",
			"conditional_operator":"字段操作",
			"content":"过滤内容",
			"logical_operator":"逻辑操作",
			"type":"content类型"
		}
		...
	]
  """

# 1. 连接
db = PyMongoRawQuery(host="127.0.0.1", port=27017, user="admin", pwd="admin123", database="test")

# 2. 构建添加过滤参数 
restrictions = [
    {
        "field": "title",  # 查询条件字段
        "conditional_operator": "$in",  # 查询条件字段操作
        "content": "P",  # 查询条件字段值(有大小写区分)
        "logical_operator": "$and",  # 和后面条件的逻辑操作
        "type": "str"  # 查询条件字段值的类型
    },
    {
        "field": "description",  # 查询条件字段
        "conditional_operator": "$nin",  # 查询条件字段操作
        "content": "2",  # 查询条件字段值(有大小写区分)
        "logical_operator": "$and",  # 和后面条件的逻辑操作
        "type": "str"  # 查询条件字段值的类型
    }
]

# 3. 查询并返回数据
print(db.conditional_query(restrictions, 'col'))

"""
[{'_id': ObjectId('642592a284000000a5006558'), 'title': 'Python教程', 'description': 'python1', 'by': 'bb', 'url': 'xx', 'tags': ['mongodb', 'database', 'NoSQL'], 'likes': 100.0}]
"""
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 获取mogno数据库结构

# 1. 连接
db = PyMongoRawQuery(host="127.0.0.1", port=27017, user="admin", pwd="admin123", database="test")

# 2. 查询并返回
print(db.get_table_structure_all())

"""
{'test': {'test': {}, 'col': {'_id': ['bson.objectid.ObjectId'], 'title': ['str'], 'description': ['str'], 'by': ['str'], 'url': ['str'], 'tags': ['list'], 'likes': ['float']}}}
"""
if __name__ == '__main__':
    db = PyMongoRawQuery(host="127.0.0.1", port=27017, user="admin", pwd="admin123", database="test")
    # nosql = 'db.getCollection("col").find({"title" : /.*python.*/i})'
    # for i in db.raw_query(nosql):
    #     print(i)

    # """
    #     OPERATOR = ['$gt', '$gte', '$lt', '$lte', '$eq', '$ne', '$in', '$nin']  # 支持操作符
    #     LOGICAL_OPERATOR = ['$and', '$or', '']  # 或与运算
    #     _TYPE = ['int', 'str', 'date', 'obj_id', 'customize']  # 筛选字段类型
    # """
    #
    # restrictions = [
    #     {
    #         "field": "title",  # 查询条件字段
    #         "conditional_operator": "$in",  # 查询条件字段操作
    #         "content": "P",  # 查询条件字段值(有大小写区分)
    #         "logical_operator": "$and",  # 和后面条件的逻辑操作
    #         "type": "str"  # 查询条件字段值的类型
    #     },
    #     {
    #         "field": "description",  # 查询条件字段
    #         "conditional_operator": "$nin",  # 查询条件字段操作
    #         "content": "2",  # 查询条件字段值(有大小写区分)
    #         "logical_operator": "$and",  # 和后面条件的逻辑操作
    #         "type": "str"  # 查询条件字段值的类型
    #     }
    # ]
    # print(db.conditional_query(restrictions, 'col'))
    print(db.get_table_structure_all())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
编辑 (opens new window)
开源pip包制作步骤
yyz-django-backend-pro

← 开源pip包制作步骤 yyz-django-backend-pro→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式