mongoose-database-schema
Version:
MongoDB database documentation generator with table schemas and relationships
131 lines (94 loc) • 3.72 kB
Markdown
# MongoDB Database Documentor
A Node.js tool for automatically generating comprehensive documentation for MongoDB databases, including schema analysis and relationship detection.
## Features
- **Schema Analysis**: Analyzes document structures and field types across collections
- **Relationship Detection**: Automatically detects references between collections
- **Multiple Output Formats**: Generate documentation in Markdown, JSON, or HTML
- **Embedded Document Support**: Identifies embedded document relationships
- **Index Information**: Documents database indexes
- **Sample-based Analysis**: Configurable sample sizes for large collections
## Installation
### Global Installation (Recommended)
```bash
npm install -g mongoose-database-schema
```
### Local Installation
```bash
npm install mongoose-database-schema
```
## Usage
### Basic Usage (Global Installation)
```bash
mongoose-database-schema -c "mongodb://localhost:27017" -d your_database_name
```
### Basic Usage (Local Installation)
```bash
npx mongoose-database-schema -c "mongodb://localhost:27017" -d your_database_name
```
### Advanced Options
```bash
# Generate JSON documentation
mongoose-database-schema -c "mongodb://localhost:27017" -d mydb -o json
# Analyze specific collections only
mongoose-database-schema -c "mongodb://localhost:27017" -d mydb --collections "users,orders,products"
# Use larger sample size for better accuracy
mongoose-database-schema -c "mongodb://localhost:27017" -d mydb -s 500
# Generate HTML documentation
mongoose-database-schema -c "mongodb://localhost:27017" -d mydb -o html
```
### Command Line Options
- `-c, --connection`: MongoDB connection string (required)
- `-d, --database`: Database name (required)
- `-o, --output`: Output format - markdown (default), json, or html
- `-s, --sample-size`: Number of documents to sample per collection (default: 100)
- `--collections`: Comma-separated list of specific collections to analyze
## Output
The tool generates documentation in the `docs/` directory:
### Markdown Output (default)
- `README.md`: Database overview
- `[collection-name].md`: Individual collection documentation
- `relationships.md`: Relationship summary
### JSON Output
- `database-documentation.json`: Complete documentation in JSON format
### HTML Output
- `database-documentation.html`: Single HTML file with all documentation
## Examples
### Connect to Local MongoDB
```bash
mongoose-database-schema -c "mongodb://localhost:27017" -d ecommerce
```
### Connect to MongoDB Atlas
```bash
mongoose-database-schema -c "mongodb+srv://user:password@cluster.mongodb.net" -d production_db
```
### Analyze Specific Collections
```bash
mongoose-database-schema -c "mongodb://localhost:27017" -d myapp --collections "users,posts,comments"
```
## What Gets Documented
### Collection Schema
- Field names and types
- Data type frequency across documents
- Example values for each field
- Nested document structures
### Relationships
- Reference relationships (ObjectId and string-based)
- One-to-many and many-to-one relationships
- Embedded document relationships
- Relationship confidence levels
### Database Metadata
- Document counts per collection
- Index information
- Collection statistics
## Relationship Detection
The tool automatically detects:
- **ObjectId References**: Fields containing ObjectIds that reference other collections
- **String References**: Fields following naming conventions (e.g., `user_id` referencing `users`)
- **Array References**: Arrays containing references to other documents
- **Embedded Documents**: Nested objects within documents
## Requirements
- Node.js 14+
- MongoDB 4.0+
- Network access to MongoDB instance
## License
MIT