自己基于golang写的MongoRest单文件的 RESTful API 网关,直接通过mongodb发布rest,crub聚合简单的很-于大爷工具集
自己基于golang写的MongoRest单文件的 RESTful API 网关,直接通过mongodb发布rest,crub聚合简单的很-于大爷工具集
在日常开发中,我们经常需要为MongoDB数据库提供HTTP接口服务。本文介绍一个轻量级工具,可以快速实现MongoDB的RESTful API访问。
工具概述
MongoRest是一个单文件的轻量级工具,它的主要特点包括:
- 无需编写代码,快速为MongoDB提供HTTP访问能力
- 支持常见的数据库操作如查询、插入、更新、删除等
- 单文件部署,无依赖,跨平台支持
- 支持丰富的MongoDB查询语法和参数
基本使用方法
快速开始
-
准备工作
首先需要获取工具文件和配置文件(app.conf)。 -
配置说明
在app.conf文件中进行基本配置:db.mongo.datasource = mongodb://用户名:密码@主机:端口 # 日志记录配置 log.file = on # 服务端口设置 httpport = 8888 -
运行服务
- Windows环境:直接运行可执行文件
- Linux/macOS环境:添加执行权限后运行
-
基本测试
curl "http://localhost:8081/mongo?action=find&db=test&collection=users&limit=2"
API调用格式
请求地址格式:http://服务器IP:端口/mongo?
支持的HTTP方法:GET和POST
核心功能介绍
1. 数据查询功能
find操作支持多种查询方式,适用于各类数据检索场景:
# 基本查询 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操作用于修改数据库中的记录:
# 批量更新
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用于批量删除数据:
# 批量插入
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操作用于复杂的数据聚合分析:
# 分组统计示例
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接口访问,减少重复开发工作。在使用过程中,需要根据实际项目需求和安全要求,合理配置和使用该工具。
参考资源
- 项目相关资料可通过作者联系方式获取
- 更多使用技巧和最佳实践可在实际应用中探索
