You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mongoose如何一次性获取MongoDB全库所有集合的全部数据

Mongoose 没有内置的 myDB.getallData() 这类直接拉取全库所有集合数据的方法,但你可以通过封装工具函数实现需求,不需要逐个编写集合的查询语句,实现逻辑如下:

实现代码

// 封装全量查询函数
async function getAllDBData() {
  const result = {}
  // 获取当前连接下所有已注册的Mongoose模型
  const registeredModels = mongoose.connection.models

  // 并发查询所有集合的全量数据
  await Promise.all(
    Object.values(registeredModels).map(async (model) => {
      // 取集合原生名称作为key,和你要求的结构匹配
      const collectionName = model.collection.name
      result[collectionName] = await model.find({})
    })
  )
  return result
}

使用方式

直接调用封装好的函数即可拿到你需要的结构数据:

const allData = await getAllDBData()
/* 返回结构示例:
{
  "fast-food": [/* 快餐集合所有数据 */],
  "liquid": [/* 饮品集合所有数据 */]
}
*/

注意事项

  • 你提到两个集合存储了大量数据,全量拉取所有集合数据会占用极高的内存、带宽和数据库IO资源,除非是离线数据导出类场景,否则生产环境不建议直接使用该方案,建议按需分页查询。
  • 如果不需要返回全部字段,可以在find方法的第二个参数指定返回字段,比如find({}, { __v: 0 })即可排除掉Mongoose默认生成的__v字段,降低数据传输量。
  • 后续新增其他集合模型后,该函数会自动包含新集合的查询逻辑,不需要额外修改代码。

内容的提问来源于stack exchange,提问作者Samandar Yusupov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:57:01