新闻详情

新闻详情

首页 / 资讯中心 / 详情

使用 NoSQLBooster 连接 FerretDB:MongoDB GUI 查询、聚合与监控实战指南

发布时间:2026/11/4 19:10:08来源:尧图网络
使用 NoSQLBooster 连接 FerretDB:MongoDB GUI 查询、聚合与监控实战指南
使用 NoSQLBooster 连接 FerretDBMongoDB GUI 查询、聚合与监控实战指南【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址: https://gitcode.com/gh_mirrors/fe/FerretDBFerretDB 是一个真正开源的 MongoDB 替代品它把 MongoDB 5.0 的线协议Wire Protocol查询转换为 SQL并以 PostgreSQL DocumentDB 扩展作为数据库引擎见 README.md。这意味着任何支持 MongoDB 协议的客户端——包括各类 MongoDB GUI——都可以直接连上 FerretDB。本指南以 NoSQLBooster 这款跨平台 MongoDB GUI 为例完整演示从 Docker 部署 FerretDB、建立连接、灌入演示数据到可视化查询、聚合管道、集合统计与 Visual Explain 监控的完整链路。读完本文你将掌握一套可复现的 MongoDB GUI 开源文档数据库 实战方案并理解其背后的命令实现原理。为什么选择 NoSQLBooster 搭配 FerretDBNoSQLBooster 是一款跨平台的 MongoDB 图形化管理工具。将它与 FerretDB 配合使用可以完整调用 NoSQLBooster 的内置能力包括Query Code Generator自动把可视化查询条件翻译成 Mongo Shell 代码SQL Query 功能用 SQL 语法查询文档数据Comprehensive Server Monitoring一站式服务器与集合监控Intellisense在 Mongo Shell 中提供自动补全。从服务端角度看FerretDB 对客户端是透明的它通过internal/clientconn监听 MongoDB 协议的 TCP 端口默认27017把 BSON 请求分发到internal/handler中对应的命令处理器再经由internal/handler/commands.go中注册的命令表路由执行。因此只要是符合 MongoDB 协议的工具如 NoSQLBooster、Studio 3T、mongosh 等都能以几乎相同的方式连接并使用 FerretDB。本博客撰写于 FerretDB 1.x 时期当时默认后端为 PostgreSQL并曾提供 SQLite 后端的 beta 支持而当前仓库主线v2已经演进为以 PostgreSQL DocumentDB 扩展作为数据库引擎兼容性目标保持不变——这一点从 README.md 的架构图Any MongoDB driver → FerretDB → PostgreSQL DocumentDB可以看出。安装与启动Docker Compose 部署 FerretDB启动 FerretDB 有多种方式官方提供的ferretdb-eval:2镜像可以一条命令快速体验但数据保存在容器内、容器销毁即丢失不适合生产更稳妥的方式是使用 Docker Compose 同时拉起 PostgreSQL 与 FerretDB 两个服务。在本地安装 Docker 后创建如下docker-compose.ymlservices: postgres: image: postgres environment: - POSTGRES_USERusername - POSTGRES_PASSWORDpassword - POSTGRES_DBferretdb volumes: - ./data:/var/lib/postgresql/data ferretdb: image: ghcr.io/ferretdb/ferretdb restart: on-failure ports: - 27017:27017 environment: - FERRETDB_POSTGRESQL_URLpostgres://postgres:5432/ferretdb networks: default: name: ferretdb随后在终端执行docker compose up -d几点实操说明postgres服务负责初始化数据库并创建用户务必把username和password替换成你自己的凭据ferretdb服务通过FERRETDB_POSTGRESQL_URL指向 PostgreSQL并把 MongoDB 协议端口27017暴露到宿主机。restart: on-failure保证 FerretDB 在异常退出后自动拉起。当前仓库根目录下的 docker-compose.yml 是开发环境专用的编排文件包含 DocumentDB 扩展构建、测试用 MongoDB 实例、Jaeger 链路追踪等并不用于生产如果你想参考更贴近当前 v2 架构的 Compose 写法可以查看 authentication.md 中基于ghcr.io/ferretdb/postgres-documentdb:17ghcr.io/ferretdb/ferretdb:2的示例。安装 NoSQLBooster前往 NoSQLBooster 官网的下载页获取对应平台的安装包安装完成后启动应用即可进入连接配置环节。建立连接从 NoSQLBooster 连接到 FerretDB确认 FerretDB 容器已经运行后打开 NoSQLBooster点击Connect打开连接窗口选择New Connection填入连接 URImongodb://127.0.0.1:27017/点击OKNoSQLBooster 便会尝试与运行在27017端口的 FerretDB 握手对应服务端的hello/isMaster等握手命令。认证配置在Connection Editor的Authentication标签页中选择LDAP (PLAIN)并填写用户名与密码。这篇博客成文时 FerretDB 只支持 PLAIN 认证机制所以需要在 NoSQLBooster 侧选择该机制。需要说明的是认证能力是随版本演进的当前仓库的官方文档 authentication.md 明确指出客户端侧目前支持SCRAM-SHA-256认证机制。无论哪种机制核心原则一致——FerretDB 自身不存储任何用户名/密码而是完全委托给 PostgreSQL 校验客户端把凭据交给 FerretDBFerretDB 转发给 PostgreSQLPostgreSQL 校验通过后才放行后续查询。你既可以在 PostgreSQL 里用CREATE USER newuser WITH PASSWORD newpassword;创建用户也可以通过 FerretDB 的createUser命令创建该命令在 commands.go 中注册对应msg_createuser.go实现。创建完成后使用mongodb://newuser:newpassword127.0.0.1:27017/这样的 URI 即可完成认证连接。添加演示数据连接成功后NoSQLBooster 会列出 FerretDB 实例中所有可见的数据库。为了演示后续功能我们先通过 NoSQLBooster 内置的 Mongo Shell 向orders集合灌入一批演示数据。点击带 Shell 图标的标签页打开 Mongo Shell执行以下脚本db.orders.insertMany([ { order_id: 1001, customer: John Doe, items: [ { name: shirt, quantity: 2, price: 25.99 }, { name: pants, quantity: 1, price: 34.99 } ], date: new Date(2023-04-25) }, { order_id: 1002, customer: Jane Smith, items: [ { name: dress, quantity: 1, price: 89.99 }, { name: shoes, quantity: 1, price: 49.99 } ], date: new Date(2023-04-26) }, { order_id: 1003, customer: Bob Johnson, items: [{ name: jacket, quantity: 1, price: 69.99 }], date: new Date(2023-04-27) }, { order_id: 1004, customer: Alice Lee, items: [ { name: socks, quantity: 3, price: 9.99 }, { name: hat, quantity: 1, price: 19.99 } ], date: new Date(2023-04-28) }, { order_id: 1005, customer: Tom Wilson, items: [ { name: sweater, quantity: 1, price: 59.99 }, { name: scarf, quantity: 2, price: 29.99 } ], date: new Date(2023-04-29) } ])这 5 条订单文档构成了我们的演示数据集每条订单包含order_id、customer、嵌套数组items以及date字段其中items数组元素又由name、quantity、price组成——正好覆盖了嵌套文档、数组展开、分组聚合等后续练习场景。在 NoSQLBooster 中验证 FerretDB 基础操作插入完成后在数据库树中导航到orders集合如果没看到新集合点击Refresh刷新。双击集合即可打开并读取其中的数据。下面我们用几种不同的操作方式验证 FerretDB 对典型 MongoDB 工作负载的支持。用可视化 Query Builder 查询嵌套文档场景查找items.name等于shoes的订单文档即 Jane Smith 的那条订单。这需要查询嵌套数组字段是文档数据库的典型检索场景。在 NoSQLBooster 中点击Query标签页打开 Query Builder插入查询条件设置items.name等于shoes点击OK and Run执行查询即可看到匹配结果FerretDB 会把这类嵌套字段查询翻译为底层 SQL 执行。从源码结构看find命令在 commands.go 中注册由msg_find.go实现查询过滤逻辑最终落到internal/documentdb层DocumentDB 扩展完成。因此Query Builder 生成的条件只要能表达为 MongoDB 查询文档FerretDB 就能正确处理。使用聚合管道Aggregation PipelineFerretDB 支持在 Mongo Shell 中执行任意支持的命令。我们先统计orders集合中的文档总数db.orders.aggregate([{ $count: total_orders }])返回结果中包含字段total_orders值为5——即集合中的订单总数。再做一个更复杂的变换计算每位客户购买所有商品的总金额。这里需要先把嵌套的items数组展开$unwind再按订单分组求和$group$sumdb.orders.aggregate([ { $unwind: $items }, { $group: { _id: $_id, total_value: { $sum: $items.price } } } ])执行后每个订单会输出一个total_value字段表示该订单所有商品价格之和。从实现上看aggregate命令由 msg_aggregate.go 的msgAggregate处理它先通过会话LSID管理创建/更新会话然后调用后端连接池的Aggregate方法执行管道最后把结果页与游标返回给客户端并将游标登记到会话中h.s.AddCursor。整个流程与 MongoDB 的聚合执行模型对齐。除了aggregate、count、distinct等命令FerretDB 还支持多种聚合管道阶段。参考官方文档 aggregation-stages.md当前文档列出的阶段包括聚合阶段说明$count统计匹配查询的文档数量$group按指定值或表达式分组为每组返回一条文档$limit限制文档数量并把剩余文档传给下一阶段$match类似find只把匹配查询条件的文档传给下一阶段$project指定传给管道下一阶段的文档字段$skip跳过指定n个文档把其余文档传给下一阶段$sort按指定顺序排序并返回全部文档$unset指定要从文档中移除/排除的字段$unwind将数组字段拆解为数组中的每个元素返回一条文档结合文档中提到的$count、$group、$limit、$match、$out、$skip、$sort、$unwind等阶段可以看到 FerretDB 足以支撑与 MongoDB 类似的复杂数据变换场景。更完整的命令支持矩阵可参考迁移/兼容性文档compatibility.md 中的 known differences 与 supported commands 列表。监控与性能分析FerretDB 还允许你在 NoSQLBooster 界面内直接监控和分析运行环境。例如用下面的命令收集orders集合的统计信息db.orders.stats()该命令对应服务端的collStats在 commands.go 中注册为 Returns storage data for a collection.。从 msg_collstats.go 的源码可以看到它支持scale参数来控制返回数值的缩放默认scale 1并返回集合的存储统计信息。此外NoSQLBooster 还提供Visual Explain工具可以把explain命令的输出渲染成树状视图直观展示查询执行计划。explain命令在 FerretDB 侧由 msg_explain.go 实现。该实现会先校验待解释的命令类型仅对aggregate、count、find三种命令生成执行计划aggregate→documentdb_api_catalog.bson_aggregation_pipelinecount→documentdb_api_catalog.bson_aggregation_countfind→documentdb_api_catalog.bson_aggregation_find随后对选中的函数执行EXPLAIN (FORMAT JSON) SELECT document FROM ...把 PostgreSQL 返回的 JSON 执行计划反序列化为 BSON 文档再拼上serverInfo主机、端口、MongoDB 兼容版本号与 FerretDB 版本返回给客户端。NoSQLBooster 拿到这些数据后就能以树状图的形式呈现查询计划帮助你定位慢查询与索引缺失。继续探索FerretDB × MongoDB GUI 生态以上演示只是 FerretDB 与 MongoDB GUI 工具协同工作的一个缩影。FerretDB 保持了对 MongoDB 协议的高兼容性因此同类 GUI如 Studio 3T、mongo-express 等也可按类似流程接入每个新版本都会继续扩充兼容命令与适配应用清单。如果你是开发者想要深入了解实现或参与贡献可以从以下几处入手命令注册表internal/handler/commands.go——查看当前支持的全部命令及帮助文本协议入口internal/clientconn——了解 MongoDB Wire Protocol 如何被接收并路由认证机制website/docs/security/authentication.md——了解 SCRAM-SHA-256、用户创建与关闭认证的配置方式兼容性说明website/docs/migration/compatibility.md——查看已知差异与支持的命令清单安装与快速开始README.md 与 website/docs/installation——涵盖 Docker、二进制包、Kubernetes 等部署方式。实战要点回顾环节关键操作对应服务端命令/源码部署docker compose up -d启动 FerretDB PostgreSQLinternal/clientconn监听 27017连接URImongodb://127.0.0.1:27017/ 认证凭据hello/authenticate见 authentication.md写入Shell 中insertMany灌入演示数据insert见 commands.go查询Query Builder 嵌套字段items.name shoesfind见msg_find.go聚合$count、$unwind$group$sumaggregate见 msg_aggregate.go监控db.orders.stats()、Visual ExplaincollStats/explain见 msg_collstats.go 与 msg_explain.go通过以上流程你可以快速验证 FerretDB 在真实 MongoDB GUI 工作流中的表现——从日常 CRUD、可视化查询到聚合变换与执行计划分析FerretDB 都能以开源的方式提供接近 MongoDB 的开发体验同时让你彻底摆脱对专有数据库的锁定。【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址: https://gitcode.com/gh_mirrors/fe/FerretDB创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/4 15:56:54

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/3 12:09:35

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/4 17:01:23

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/4 12:33:12

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/4 1:25:31

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/4 3:51:11

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉