自己基于golang写的MongoRest单文件的 RESTful API 网关,直接通过mongodb发布rest,crub聚合简单的很-于大爷工具集

自己基于golang写的MongoRest单文件的 RESTful API 网关,直接通过mongodb发布rest,crub聚合简单的很-于大爷工具集

在日常开发中,我们经常需要为MongoDB数据库提供HTTP接口服务。本文介绍一个轻量级工具,可以快速实现MongoDB的RESTful API访问。

工具概述

MongoRest是一个单文件的轻量级工具,它的主要特点包括:

  • 无需编写代码,快速为MongoDB提供HTTP访问能力
  • 支持常见的数据库操作如查询、插入、更新、删除等
  • 单文件部署,无依赖,跨平台支持
  • 支持丰富的MongoDB查询语法和参数

基本使用方法

快速开始

  1. 准备工作

    首先需要获取工具文件和配置文件(app.conf)。

  2. 配置说明

    在app.conf文件中进行基本配置:

    复制代码
    db.mongo.datasource = mongodb://用户名:密码@主机:端口
    # 日志记录配置
    log.file = on
    # 服务端口设置
    httpport = 8888
  3. 运行服务

    • Windows环境:直接运行可执行文件
    • Linux/macOS环境:添加执行权限后运行
  4. 基本测试

    bash 复制代码
    curl "http://localhost:8081/mongo?action=find&db=test&collection=users&limit=2"

API调用格式

请求地址格式:http://服务器IP:端口/mongo?

支持的HTTP方法:GET和POST

核心功能介绍

1. 数据查询功能

find操作支持多种查询方式,适用于各类数据检索场景:

bash 复制代码
# 基本查询 VX:wokong6686496
http://localhost:8081/mongo?action=find&collection=users&db=test&limit=2&filter={}

# 条件查询
http://localhost:8081/mongo?action=find&collection=users&db=test&filter={"age":{"$gte":18}}

# 正则查询
http://localhost:8081/mongo?action=find&collection=users&db=test&filter={"name":{"$regex":"张"}}

# 字段投影
http://localhost:8081/mongo?action=find&collection=users&db=test&projection={"_id":0,"name":1}

2. 数据更新能力

updateMany和findOneAndUpdate操作用于修改数据库中的记录:

bash 复制代码
# 批量更新
http://localhost:8081/mongo?action=updateMany&collection=users&db=test&filter={"status":"inactive"}&update={"$set":{"status":"active"}}

# 单条更新并返回
http://localhost:8081/mongo?action=findOneAndUpdate&collection=users&db=test&filter={"_id":{"$oid":"5f8a1234"}}&update={"$set":{"name":"新名称"}}

3. 数据插入与删除

insertMany 用于批量插入数据,deleteMany用于批量删除数据:

bash 复制代码
# 批量插入
http://localhost:8081/mongo?action=insertMany&collection=users&db=test&insert=[{"name":"用户1","age":25},{"name":"用户2","age":30}]

# 批量删除
http://localhost:8081/mongo?action=deleteMany&collection=users&db=test&filter={"status":"deleted"}

4. 聚合查询功能

aggregate操作用于复杂的数据聚合分析:

bash 复制代码
# 分组统计示例
http://localhost:8081/mongo?action=aggregate&db=test&collection=orders&filter=[{"$group":{"_id":"$category","total":{"$sum":"$amount"}}},{"$sort":{"total":-1}}]

技术实现要点

安全配置说明

使用过程中需要注意以下安全事项:

  • 建议仅在内部网络环境中使用,避免直接暴露到公网
  • 连接字符串应妥善保管,避免泄露
  • 可以根据实际需求配置访问控制

连接字符串配置示例

复制代码
# 本地MongoDB连接示例
db.mongo.datasource=mongodb://user:password@localhost:27017

# 远程服务器连接示例
db.mongo.datasource=mongodb://user:password@192.168.1.100:27017

# MongoDB Atlas连接示例
db.mongo.datasource=mongodb+srv://user:password@cluster0.example.mongodb.net/?retryWrites=true&w=majority

日志记录功能

启用日志后,可以在logs目录查看详细的请求记录:

复制代码
2025/09/04 20:26:49.050 [I] [util.go:136]  -------requestInfo-----------
2025/09/04 20:26:49.050 [I] [util.go:137]  request path: /mongo
2025/09/04 20:26:49.050 [I] [util.go:138]  client ip: [::1]
2025/09/04 20:26:49.050 [I] [util.go:139]  action: updateMany
# ...更多日志内容

使用场景与注意事项

适用场景

  • 快速为MongoDB搭建临时API服务
  • 开发环境中前后端分离的数据接口
  • 小型应用或原型开发阶段的数据访问层
  • 需要简单HTTP接口的数据迁移或同步任务

性能与限制

  • 对于高并发场景,需要评估实际负载情况
  • 单次查询结果数量建议控制在合理范围内
  • 复杂的业务逻辑建议在应用层实现,而非依赖数据库接口

开发建议

  • 在生产环境使用前,建议进行充分的安全评估
  • 考虑添加额外的访问控制层
  • 根据实际需求选择合适的缓存策略
  • 对于频繁的查询操作,建议合理设置索引

总结

MongoRest作为一个轻量级工具,在特定场景下可以帮助开发者快速实现MongoDB的HTTP接口访问,减少重复开发工作。在使用过程中,需要根据实际项目需求和安全要求,合理配置和使用该工具。

参考资源

  • 项目相关资料可通过作者联系方式获取
  • 更多使用技巧和最佳实践可在实际应用中探索
相关推荐
算法打盹中6 小时前
深入解析 Transformer 模型:以 ChatGPT 为例从词嵌入到输出预测的大语言模型核心工作机制
人工智能·深度学习·语言模型·chatgpt·transformer·1024程序员节
大数据张老师7 小时前
数据结构——直接插入排序
数据结构·算法·排序算法·1024程序员节
恒锐丰小吕7 小时前
EG1151 四开关升降压电源管理芯片技术解析
嵌入式硬件·硬件工程·1024程序员节
lsnm7 小时前
C++新手项目-JsonRPC框架
开发语言·c++·1024程序员节
Yeniden8 小时前
设计模式>原型模式大白话讲解:就像复印机,拿个原件一复印,就得到一模一样的新东西
java·设计模式·原型模式·1024程序员节
南方的狮子先生8 小时前
【数据结构】从线性表到排序算法详解
开发语言·数据结构·c++·算法·排序算法·1024程序员节
CoderJia程序员甲9 小时前
GitHub 热榜项目 - 日榜(2025-10-29)
ai·开源·github·1024程序员节·ai教程
RyanJohnson11 小时前
企业数据仓库
数据仓库·1024程序员节
B站计算机毕业设计之家11 小时前
计算机视觉:基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测识别系统(Python+PySide6界面+训练代码)(源码+文档)✅
人工智能·深度学习·opencv·yolo·计算机视觉·零售·1024程序员节