自己基于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接口访问,减少重复开发工作。在使用过程中,需要根据实际项目需求和安全要求,合理配置和使用该工具。

参考资源

  • 项目相关资料可通过作者联系方式获取
  • 更多使用技巧和最佳实践可在实际应用中探索
相关推荐
学传打活21 小时前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活6 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16814 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心16 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552722 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552723 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝24 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552724 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552725 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055271 个月前
Java实用类应用精讲
人工智能·1024程序员节