如何列出 MongoDB 数据库集合

MongoDBMongoDBBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程提供了一份全面的指南,用于列出MongoDB数据库集合,重点介绍了使用MongoDB数据库的开发人员的基本技术。通过探索不同的方法和实际代码实现,读者将深入了解如何使用Python和MongoDB的原生命令高效地检索和管理数据库集合。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb/BasicOperationsGroup -.-> mongodb/start_mongodb_shell("Start MongoDB Shell") mongodb/BasicOperationsGroup -.-> mongodb/create_database_collection("Create Database and Collection") mongodb/BasicOperationsGroup -.-> mongodb/insert_document("Insert Document") mongodb/BasicOperationsGroup -.-> mongodb/update_document("Update Document") mongodb/BasicOperationsGroup -.-> mongodb/delete_document("Delete Document") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") subgraph Lab Skills mongodb/start_mongodb_shell -.-> lab-435312{{"如何列出 MongoDB 数据库集合"}} mongodb/create_database_collection -.-> lab-435312{{"如何列出 MongoDB 数据库集合"}} mongodb/insert_document -.-> lab-435312{{"如何列出 MongoDB 数据库集合"}} mongodb/update_document -.-> lab-435312{{"如何列出 MongoDB 数据库集合"}} mongodb/delete_document -.-> lab-435312{{"如何列出 MongoDB 数据库集合"}} mongodb/find_documents -.-> lab-435312{{"如何列出 MongoDB 数据库集合"}} end

MongoDB基础

什么是MongoDB?

MongoDB是一个广受欢迎的非关系型数据库,具有高性能、高可用性和易于扩展的特点。与传统的关系型数据库不同,MongoDB以灵活的、类似JSON的文档形式存储数据,这些文档被称为BSON(二进制JSON),它允许更动态和无模式的数据存储。

关键特性

特性 描述
面向文档 以灵活的、类似JSON的文档形式存储数据
可扩展性 通过分片支持水平扩展
性能 提供高速的读写操作
索引 支持多种类型的索引以实现高效查询

MongoDB架构

graph TD A[客户端应用程序] --> B[MongoDB服务器] B --> C[数据库] C --> D[集合] D --> E[文档]

在Ubuntu 22.04上安装

要安装MongoDB,请使用以下命令:

## 导入MongoDB公共GPG密钥
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

## 添加MongoDB仓库
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

## 更新软件包列表
sudo apt-get update

## 安装MongoDB
sudo apt-get install -y mongodb-org

基本概念

  1. 数据库:集合的容器
  2. 集合:相当于关系型数据库中的表
  3. 文档:集合中的一条记录,类似于行
  4. 字段:文档中的键值对

示例文档结构

{
    "_id": ObjectId("..."),
    "name": "John Doe",
    "age": 30,
    "email": "[email protected]"
}

为什么选择MongoDB?

MongoDB特别适用于:

  • 实时分析
  • 内容管理系统
  • 物联网和时间序列数据
  • 移动和Web应用程序

借助LabEx,你可以在支持实践技能发展的实践环境中轻松练习和学习MongoDB。

列出集合的方法

集合列出技术概述

MongoDB提供了多种方法来列出数据库中的集合。了解这些方法对于有效的数据库管理和探索至关重要。

列出集合的方法

方法 描述 语法
show collections 交互式 shell 命令 MongoDB Shell
db.getCollectionNames() 返回集合名称的数组 MongoDB Shell
db.collectionNames() 列出集合的旧方法 MongoDB Shell
listCollections() MongoDB原生驱动方法 编程方式

MongoDB Shell方法

1. 交互式 shell 命令

## 连接到MongoDB
mongosh

## 切换到特定数据库
use mydatabase

## 列出所有集合
show collections

2. 使用 getCollectionNames()

// 返回集合名称的数组
db.getCollectionNames();

编程方式

Python PyMongo示例

from pymongo import MongoClient

## 建立连接
client = MongoClient('mongodb://localhost:27017')
db = client['mydatabase']

## 列出集合
collections = db.list_collection_names()
print(collections)

Node.js MongoDB驱动

const MongoClient = require("mongodb").MongoClient;

MongoClient.connect("mongodb://localhost:27017", (err, client) => {
  const db = client.db("mydatabase");

  // 列出集合
  db.listCollections().toArray((err, collections) => {
    console.log(collections);
  });
});

过滤集合

graph LR A[列出集合] --> B{过滤条件} B --> |名称模式| C[正则表达式过滤] B --> |类型| D[集合类型] B --> |命名空间| E[特定数据库]

高级过滤示例

// 列出具有特定名称模式的集合
db.getCollectionNames({
  filter: { name: /^user/ }
});

最佳实践

  1. 在列出集合之前始终验证数据库上下文
  2. 根据你的编程环境使用适当的方法
  3. 在列出集合时处理潜在错误
  4. 考虑大型数据库的性能

借助LabEx,你可以在可控的交互式学习环境中练习这些集合列出技术。

代码实现

全面的集合列出策略

1. MongoDB Shell实现

## 启动MongoDB shell

## 切换到特定数据库

## 列出所有集合

## 获取集合名称数组

特定语言的实现

Python PyMongo详细示例

from pymongo import MongoClient

class MongoCollectionLister:
    def __init__(self, host='localhost', port=27017):
        self.client = MongoClient(f'mongodb://{host}:{port}')

    def list_collections(self, database_name):
        try:
            db = self.client[database_name]
            collections = db.list_collection_names()
            return collections
        except Exception as e:
            print(f"Error listing collections: {e}")
        finally:
            self.client.close()

## 使用方法
lister = MongoCollectionLister()
collections = lister.list_collections('mydatabase')
print(collections)

Node.js MongoDB实现

const { MongoClient } = require("mongodb");

async function listCollections(uri, dbName) {
  const client = new MongoClient(uri);

  try {
    await client.connect();
    const database = client.db(dbName);

    const collections = await database.listCollections().toArray();
    return collections.map((collection) => collection.name);
  } catch (error) {
    console.error("Collection listing error:", error);
  } finally {
    await client.close();
  }
}

// 示例用法
listCollections("mongodb://localhost:27017", "mydatabase").then((collections) =>
  console.log(collections)
);

高级集合过滤

graph TD A[集合列出] --> B{过滤选项} B --> |名称模式| C[正则表达式过滤] B --> |集合类型| D[系统/用户集合] B --> |大小约束| E[基于大小的过滤]

过滤技术

过滤类型 描述 示例
名称模式 按名称匹配集合 ^user_前缀
类型过滤 区分集合类型 系统与用户
大小约束 按集合大小过滤 集合 > 1MB

健壮的错误处理

def safe_collection_listing(database):
    try:
        collections = database.list_collection_names()
        return [
            collection for collection in collections
            if not collection.startswith('system.')
        ]
    except pymongo.errors.PyMongoError as e:
        logging.error(f"Collection listing failed: {e}")
        return []

性能考虑因素

  1. 对于大型数据库使用 list_collection_names()
  2. 实现缓存机制
  3. 对大型数据库限制结果集
  4. 使用投影减少开销

安全最佳实践

  • 使用连接池
  • 实施适当的身份验证
  • 验证和清理数据库名称
  • 使用只读凭证进行列出操作

借助LabEx,你可以在支持实践技能发展的安全、可控环境中试验这些实现策略。

总结

了解如何列出MongoDB数据库集合对于有效的数据库管理和开发至关重要。本教程展示了多种检索集合的方法,使开发人员能够根据其特定的项目需求和MongoDB配置选择最合适的方法。