0Pricing
MongoDB Academy · Lección

Bases de datos, colecciones y espacios de nombres

Creará una base de datos, añadirá colecciones y comprenderá cómo organiza MongoDB los datos en el nivel de espacio de nombres.

Bases de datos, colecciones y espacios de nombres es una lección gratuita de MongoDB Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de MongoDB Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de MongoDB Academy incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

MongoDB's Three-Level Hierarchy

MongoDB nests data in three levels: Database, Collection, Document. It mirrors SQL's database, table, row — and one server can hold many of each.

What Is a Namespace?

A namespace names a collection by combining database and collection with a dot, like myapp.users. You'll see this notation in logs and explain output.

// Namespace: database.collection
// 'shop' database, 'products' collection:
use shop
db.products.find({})
// MongoDB internally refers to this as 'shop.products'

// You can also reference it explicitly:
db.getSiblingDB('shop').getCollection('products').find({})

Switching and Creating Databases

In mongosh, use switches databases. There's no CREATE DATABASE — MongoDB makes one lazily, the moment you insert your first document. The code shows it.

// Switch to (or create) a database
use myNewApp
// 'myNewApp' doesn't exist yet - no error, but not visible in 'show dbs'

// Insert a document to materialize the database
db.users.insertOne({ name: 'Alice' });

// Now 'myNewApp' appears:
show dbs
// admin     0.000GB
// local     0.000GB
// myNewApp  0.000GB

System Databases: admin, local, config

MongoDB keeps three system databases: admin for users and roles, local for replication data, and config for sharded-cluster metadata. Good to recognize, not to touch.

// View all databases on the server
show dbs
// admin   0.000GB
// config  0.000GB
// local   0.004GB
// shop    0.012GB
// myapp   0.008GB

// List databases programmatically
db.adminCommand({ listDatabases: 1 });

Creating Collections Explicitly

Use createCollection when you need special options up front — capped, time-series, clustered, or a schema validator. The code creates one with validation rules.

// Create a collection with a JSON Schema validator
db.createCollection('products', {
  validator: {
    $jsonSchema: {
      bsonType: 'object',
      required: ['name', 'price'],
      properties: {
        name:  { bsonType: 'string' },
        price: { bsonType: 'number', minimum: 0 }
      }
    }
  }
});

Listing and Inspecting Collections

A few commands let you explore your database: list collections, get detailed info, and check storage stats. show collections is the quick one. The code shows more.

use shop

show collections
// orders
// products
// users

db.getCollectionInfos();
// Returns array of {name, type, options, idIndex} per collection

db.orders.stats().count;
// 15234

db.orders.totalIndexSize();
// 2359296 (bytes)

Renaming and Dropping Collections

You can rename a collection instantly, or drop one to delete it for good. Dropping is permanent — there's no recycle bin, so back up first in production.

// Rename a collection
db.oldUsers.renameCollection('users');
// { ok: 1 }

// Drop a collection - IRREVERSIBLE
db.tempData.drop();
// true

// Drop the entire database - EXTREMELY DANGEROUS
// db.dropDatabase();
// Use only in development or with full backup

Multi-Tenancy With Databases

For SaaS apps, multi-tenancy can mean a database per customer for strong isolation, or one shared collection filtered by a tenantId field. The code shows both.

// Option 1: Database-per-tenant
const db = client.db('tenant_' + tenantId);
db.users.find({});
// Each tenant has completely isolated data

// Option 2: Shared collection with tenantId field
const db = client.db('saas_app');
db.users.find({ tenantId: tenantId });
// All tenants share one collection, filtered by tenantId

Collection Naming Best Practices

A few naming habits prevent headaches: stay consistent, use plural nouns like users, and avoid special characters. Good naming conventions make code easier to read.

// Good collection names
db.users.find({});
db.order_items.find({});
db.productCategories.find({});

// Avoid these
db['$sales'].find({});        // $ prefix causes issues
db['system.logs'].find({});   // reserved prefix
db['my.collection'].find({}); // dot in name causes confusion

The WiredTiger Storage Engine

MongoDB's default storage engine is WiredTiger. It allows many writes at once without blocking, compresses data on disk, and journals writes so crashes don't lose data.

// Check current storage engine
db.serverStatus().storageEngine;
// { name: 'wiredTiger', supportsCommittedReads: true, ... }

// Collection stats show compression savings
db.orders.stats();
// storageSize: 2097152 (compressed on disk)
// size: 8388608 (uncompressed logical size)

Understanding the Oplog

The oplog is a special log of every write in a replica set. Secondaries replay it to stay in sync, and it also powers MongoDB's live Change Streams.

// Inspect oplog in mongosh (replica set members only)
use local
db.oplog.rs.find().sort({ $natural: -1 }).limit(3);
// { op: 'i', ns: 'shop.orders', o: { _id: ..., ... } }
// op: 'i'=insert, 'u'=update, 'd'=delete, 'c'=command

Quick Check

Test your understanding of MongoDB & NoSQL Databases concepts from this lesson.

Lesson Recap

You learned MongoDB organizes data as Database, Collection, Document, that databases are created lazily, and that WiredTiger powers storage. Next: the mongosh shell.

Preguntas frecuentes

¿La lección «Bases de datos, colecciones y espacios de nombres» es gratis?

Sí — el texto completo de «Bases de datos, colecciones y espacios de nombres» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de MongoDB Academy, actualiza a CoddyKit PRO. El curso de MongoDB Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Bases de datos, colecciones y espacios de nombres»?

Creará una base de datos, añadirá colecciones y comprenderá cómo organiza MongoDB los datos en el nivel de espacio de nombres. Practicas MongoDB Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar MongoDB Academy?

No se requiere experiencia previa. MongoDB Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Bases de datos, colecciones y espacios de nombres»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de MongoDB Academy?

Sí. Cada lección de MongoDB Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. ¿Qué es un documento BSON?
  2. Colecciones frente a tablas SQL
  3. Bases de datos, colecciones y espacios de nombres
  4. Conceptos esenciales de la shell mongosh
← Volver a MongoDB Academy