diff --git a/mongodb-uni/learning-paths/atlas-search.md b/mongodb-uni/learning-paths/atlas-search.md deleted file mode 100644 index 917169ce7..000000000 --- a/mongodb-uni/learning-paths/atlas-search.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Atlas Search -url: https://learn.mongodb.com/learning-paths/atlas-search -metadata: - tags: - - developer -- search ---- - -# Atlas Search - -This course is designed to help you use Atlas Search in your applications for a seamless full-text search experience. You’ll learn how to write Atlas Search queries and manage search indexes by using the Atlas UI, CLI, and MongoDB Shell. Then you’ll build on this foundation by writing advanced search queries that use the compound operator, nesting, and features such as fuzzy search and autocomplete. - -#### Introduction to Atlas Search - -2 hours 15 Minutes - -Learn how to use Atlas Search to build search functionality for your application. You'll learn how to define a search index, create a search query, and view search metadata. - - [View Details](https://learn.mongodb.com/courses/introduction-to-atlas-search) - - * * * * * - -#### Managing Atlas Search Indexes - -45 Minutes - -Learn how to manage Atlas Search indexes with the Atlas UI, Atlas CLI, and MongoDB Shell. - - [View Details](https://learn.mongodb.com/courses/managing-atlas-search-indexes) - - * * * * * - -#### Advanced Queries with Atlas Search - -3 hours - -Learn how to write Atlas Search queries using features such as the compound operator, sorting customization, and fuzzy search. - - [View Details](https://learn.mongodb.com/courses/advanced-queries-with-atlas-search) - - * * * * * - -#### Analyzers in Atlas Search - -1 hour 45 Minutes - -Learn all about analyzers in Atlas Search and the crucial role they play in making search results relevant and accurate. - - [View Details](https://learn.mongodb.com/courses/analyzers-in-atlas-search) - - * * * * * - -#### Autocomplete with Atlas Search - -1 hour 30 Minutes - -Learn how to enhance user experience by adding the autocomplete functionality to Atlas Search indexes. As one of the most common features of a search platform, autocomplete is easy to include in any application using Atlas Search. - - [View Details](https://learn.mongodb.com/courses/autocomplete-with-atlas-search) diff --git a/mongodb-uni/learning-paths/atlas-vector-search.md b/mongodb-uni/learning-paths/atlas-vector-search.md deleted file mode 100644 index b1bf186d3..000000000 --- a/mongodb-uni/learning-paths/atlas-vector-search.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Atlas Vector Search -url: https://learn.mongodb.com/learning-paths/atlas-vector-search -metadata: - tags: - - developer - - search - - vector search - description: Learn how to generate embeddings for your data, store your embeddings in MongoDB Atlas, and index and search your embeddings to perform a semantic search using Atlas Vector Search. ---- - -# Atlas Vector Search - -This course will provide you with an introduction to artificial intelligence and vector search. Then, you'll learn how to generate embeddings for your data, store your embeddings in MongoDB Atlas, and index and search your embeddings to perform a semantic search. Finally, you'll learn how to build and use hybrid search that leverages text search capabilities of Atlas Search and semantic search capacilities of Atlas Vector Search. - -## Introduction to AI and Vector Search - -30 Minutes - -Learn about the foundations of AI and how Atlas Vector Search fits in. - -[View Details](https://learn.mongodb.com/courses/introduction-to-ai-and-vector-search) - -## Using Vector Search for Semantic Search - -1 hour 45 Minutes - -Learn all about Atlas Vector Search as you build a semantic search feature. Leverage both Atlas Search and Atlas Vector Search to identify the most relevant search results. - -[View Details](https://learn.mongodb.com/courses/using-vector-search-for-semantic-search) - -## Using Atlas Vector Search for RAG Applications - -3 hours - -Learn how to implement Retrieval Augmented Generation or RAG with MongoDB in your application. Learn what retrieval augmented generation is and set it up using the MongoDB Python driver. - -[View Details](https://learn.mongodb.com/courses/using-atlas-vector-search-for-rag-applications) - -## Managing Atlas Vector Search Indexes - -1 hour 30 Minutes - -Learn how to manage your Atlas Vector Search indexes using the Atlas CLI and MongoDB Shell. - -[View Details](https://learn.mongodb.com/courses/managing-atlas-vector-search-indexes) diff --git a/mongodb-uni/learning-paths/building-gen-ai-apps.md b/mongodb-uni/learning-paths/building-gen-ai-apps.md deleted file mode 100644 index 3ae8429db..000000000 --- a/mongodb-uni/learning-paths/building-gen-ai-apps.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Building GenAI Apps Badge Learning Path -url: https://learn.mongodb.com/learning-paths/building-genai-apps-learning-badge-path -metadata: - tags: - - developer - - ai - - genai - - generative ai - - learning path - - retrieval augmented generation - - rag - description: Learn how to build a generative application with MongoDB Atlas Vector Search. ---- - -# Building GenAI Apps Badge Learning Path - -In this learning path, you'll build a GenAI application with MongoDB's Atlas Vector Search and learn how you can leverage it across a variety of use cases. - -This learning path guides you through the foundations of building a GenAI application with MongoDB's Atlas Vector Search. You'll learn what semantic search is and how you can leverage it across a variety of use cases. Then, you'll learn how to build your own chatbot by creating a retrieval augmented generation application with MongoDB and Langchain. - -To earn your badge, complete the content in this learning path and then pass the short assessment at the end. You will receive an email with your official Credly badge and digital certificate within 24 hours. - -## Introduction to AI and Vector Search - -30 Minutes - -Learn about the foundations of AI and how Atlas Vector Search fits in. - -[View Details](https://learn.mongodb.com/courses/introduction-to-ai-and-vector-search) - -## Using Vector Search for Semantic Search - -1 hour 45 Minutes - -Learn all about Atlas Vector Search as you build a semantic search feature. Leverage both Atlas Search and Atlas Vector Search to identify the most relevant search results. - -[View Details](https://learn.mongodb.com/courses/using-vector-search-for-semantic-search) - -## Using Atlas Vector Search with RAG - -3 hours - -Learn how to implement Retrieval Augmented Generation or RAG with MongoDB in your application. Learn what retrieval augmented generation is and set it up using the MongoDB Python driver. - -[View Details](https://learn.mongodb.com/courses/using-atlas-vector-search-with-rag) - -## Managing Atlas Vector Search Indexes - -1 hour 30 Minutes - -Learn how to manage your Atlas Vector Search indexes using the Atlas CLI and MongoDB Shell. - -[View Details](https://learn.mongodb.com/courses/managing-atlas-vector-search-indexes) - -## Data Ingestion for RAG Applications - -20 minutes - -Learn about the Data Ingestion Pipeline for retrieval augmented generation (RAG) applications. - -[View Details](https://learn.mongodb.com/courses/data-ingestion-for-rag-applications) diff --git a/mongodb-uni/learning-paths/csharp.md b/mongodb-uni/learning-paths/csharp.md deleted file mode 100644 index 9c7cb53a7..000000000 --- a/mongodb-uni/learning-paths/csharp.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: MongoDB C# Developer Path -url: https://learn.mongodb.com/learn/learning-path/using-mongodb-with-c-sharp -metadata: - tags: - - developer - - C# - - learning path - programmingLanguage: csharp - description: Learn the basics of using MongoDB as a database with C# to build applications. ---- - -# MongoDB C# Developer Path - -This learning path contains a series of courses to teach you MongoDB skills. In this path, you’ll learn the basics of building modern applications with C#, using MongoDB as your database. - -When you complete this learning path, you will receive 50% off an Associate Developer certification exam attempt. - -## Start Here - Intro to MongoDB - -15 Minutes - -This unit gives an overview of MongoDB fundamentals, from the document model to CRUD operations to indexing, that you will learn during the Introduction to MongoDB course. - -[View Details](https://learn.mongodb.com/courses/start-here-introduction-to-mongodb) - -## Getting Started with MongoDB Atlas - -1 Hour - -Learn about MongoDB Atlas, our multi-cloud developer data platform, its latest features, and how to deploy your first cluster. - -[View Details](https://learn.mongodb.com/courses/getting-started-with-mongodb-atlas) - -## MongoDB and the Document Model - -1.25 Hours - -Want to learn more about MongoDB and the document model? In this unit, you'll learn how to manage MongoDB databases, collections, and documents. - -[View Details](https://learn.mongodb.com/courses/overview-of-mongodb-and-the-document-model) - -## MongoDB Data Modeling Intro - -45 Minutes - -Learn the basics of data modeling, the process of defining how data is stored and the relationships among different entities in your data, in MongoDB. - -[View Details](https://learn.mongodb.com/courses/introduction-to-mongodb-data-modeling) - -## Connecting to a MongoDB Database - -1 Hour - -Learn how to connect to MongoDB databases by using connection strings. Connection strings allow you to connect your cluster with the mongo shell, with Compass (our GUI that enables querying, optimizing and analyzing MongoDB data), and to an application. - -[View Details](https://learn.mongodb.com/courses/connecting-to-a-mongodb-database) - -## Connecting to MongoDB in C# - -.75 Hours - -Learn about the C# driver for MongoDB and how to use it to connect to your C# applications. - -[View Details](https://learn.mongodb.com/courses/connecting-to-mongodb-in-c-sharp) - -## MongoDB CRUD Operations: Insert and Find Documents - -1.75 Hours - -Learn how to create, find, and query MongoDB documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-insert-and-find-documents) - -## MongoDB CRUD Operations: Replace and Delete Documents - -1.75 Hours - -Learn how to replace and delete documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-replace-and-delete-documents) - -## MongoDB CRUD Operations: Modifying Query Results - -1.25 Hours - -Learn how to sort and limit query results and how to count documents in MongoDB. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-modifying-query-results) - -## MongoDB CRUD Operations in C# - -3 Hours - -Learn how to perform basic CRUD operations with the MongoDB C# driver. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-in-c-sharp) - -## MongoDB Aggregation - -1.75 Hours - -Learn how to create aggregation pipelines that enable you to analyze and summarize data by stringing together stages that filter, sort, group, and/or transform data. - -[View Details](https://learn.mongodb.com/courses/mongodb-aggregation) - -## MongoDB Aggregation with C# - -1 Hour - -Learn how to create aggregation pipelines with C#. - -[View Details](https://learn.mongodb.com/courses/mongodb-aggregation-with-c-sharp) - -## MongoDB Indexes - -1.75 Hours - -Learn how to improve MongoDB performance by learning how to create single, compound, and multikey indexes as well as how to delete indexes. - -[View Details](https://learn.mongodb.com/courses/mongodb-indexes) - -## MongoDB Atlas Search - -1.5 Hours - -Learn about MongoDB Atlas Search, a full text search feature that combines three systems - database, search engine, and sync mechanisms. - -[View Details](https://learn.mongodb.com/courses/mongodb-atlas-search) - -## MongoDB Transactions - -1 Hour - -Learn about ACID transactions in MongoDB and how they guarantee certain database operations happen together or not at all to ensure data integrity within the database. - -[View Details](https://learn.mongodb.com/courses/mongodb-transactions) - -## MongoDB Compass - -20 Minutes - -Learn how to use MongoDB Compass: the official Graphical User Interface built by -- and for -- MongoDB. This Learning Byte will cover how to set up and use MongoDB Compass to oversee and optimize your database. - -[View Details](https://learn.mongodb.com/courses/mongodb-compass) - -## MongoDB VS Code Extension - -20 Minutes - -Learn how to use the MongoDB VS Code extension to create, manage, and query MongoDB databases. - -[View Details](https://learn.mongodb.com/courses/mongodb-vs-code-extension) diff --git a/mongodb-uni/learning-paths/data-modeling.md b/mongodb-uni/learning-paths/data-modeling.md deleted file mode 100644 index d306f071f..000000000 --- a/mongodb-uni/learning-paths/data-modeling.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: MongoDB Data Modeling Learning Path -url: https://learn.mongodb.com/learning-paths/data-modeling-for-mongodb -metadata: - tags: - - data modeling - - learning path - description: This learning path guides you through the foundational steps of creating an effective data model in MongoDB. ---- - -# MongoDB Data Modeling Learning Path - -This learning path guides you through the foundational steps of creating an effective data model in MongoDB. - -When you complete this learning path, you will receive 50% off a [MongoDB Associate Data Modeler Exam](https://learn.mongodb.com/courses/mongodb-associate-data-modeler-exam) attempt. - -## MongoDB Data Modeling Path - -### Data Modeling for MongoDB Overview - -3 Minutes - -Gain an overview of data modeling in MongoDB and learn about the example application used throughout the Data Modeling for MongoDB course. - -[View Details](https://learn.mongodb.com/courses/data-modeling-for-mongodb-overview) - ---- - -### Identifying Database Workloads - -30 Minutes - -Learn how to identify the database workload of an application which is the first step of data modeling with MongoDB. - -[View Details](https://learn.mongodb.com/courses/identifying-database-workloads) - ---- - -### Modeling Data Relationships - -45 Minutes - -Learn how to identify and model data relationships in an application which is the second step of data modeling with MongoDB. - -[View Details](https://learn.mongodb.com/courses/modeling-data-relationships) - ---- - -### Schema Design Patterns - -1 Hour - -Learn how to apply schema design patterns to an application which is the third step of data modeling with MongoDB. - -[View Details](https://learn.mongodb.com/courses/schema-design-patterns) - ---- - -### Advanced Schema Design Patterns - -2.75 Hours - -Learn how to apply advanced schema design patterns to an application to improve performance and avoid common anti-patterns. - -[View Details](https://learn.mongodb.com/courses/advanced-schema-design-patterns) - ---- - -### Schema Design Anti Patterns - -1 Hour - -Learn about common anti-patterns and how to avoid them when data modeling with MongoDB. - -[View Details](https://learn.mongodb.com/courses/schema-design-anti-patterns) - ---- - -### Schema Lifecycle Management - -1 Hour - -Learn how to update and migrate your schema. - -[View Details](https://learn.mongodb.com/courses/schema-lifecycle-management) diff --git a/mongodb-uni/learning-paths/dba.md b/mongodb-uni/learning-paths/dba.md deleted file mode 100644 index 01a7ca290..000000000 --- a/mongodb-uni/learning-paths/dba.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: MongoDB Database Administration Path -url: https://learn.mongodb.com/learning-paths/mongodb-php-developer-path -metadata: - tags: - - developer - - DBA - - learning path - description: Learn MongoDB knowledge and skills for database administrators. ---- - -# MongoDB Database Administration Path - -This learning path contains a series of units to help you, as a Database Administrator, learn MongoDB knowledge and skills. In this path, you’ll learn MongoDB basics as well as how to administer and maintain a MongoDB database. - -When you complete this learning path, you will receive 50% off an Associate DBA certification exam attempt. - -## MongoDB and the Document Model - -1.25 Hours - -Want to learn more about MongoDB and the document model? In this unit, you'll learn how to manage MongoDB databases, collections, and documents. - -[View Details](https://learn.mongodb.com/courses/overview-of-mongodb-and-the-document-model) - -## MongoDB Data Modeling Intro - -45 Minutes - -Learn the basics of data modeling, the process of defining how data is stored and the relationships among different entities in your data, in MongoDB. - -[View Details](https://learn.mongodb.com/courses/introduction-to-mongodb-data-modeling) - -## The MongoDB Shell - -1.25 Hours - -Learn how to use the MongoDB Shell to interact with local and remote MongoDB databases. In addition to learning the basics of MongoDB Shell, you'll learn how to customize it based on your needs. - -[View Details](https://learn.mongodb.com/courses/the-mongodb-shell) - -## Connecting to a MongoDB Database - -1 Hour - -Learn how to connect to MongoDB databases by using connection strings. Connection strings allow you to connect your cluster with the mongo shell, with Compass (our GUI that enables querying, optimizing and analyzing MongoDB data), and to an application. - -[View Details](https://learn.mongodb.com/courses/connecting-to-a-mongodb-database) - -## MongoDB CRUD Operations: Insert and Find Documents - -1.75 Hours - -Learn how to create, find, and query MongoDB documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-insert-and-find-documents) - -## MongoDB CRUD Operations: Replace and Delete Documents - -1.75 Hours - -Learn how to replace and delete documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-replace-and-delete-documents) - -## MongoDB CRUD Operations: Modifying Query Results - -1.25 Hours - -Learn how to sort and limit query results and how to count documents in MongoDB. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-modifying-query-results) - -## MongoDB Indexes - -1.75 Hours - -Learn how to improve MongoDB performance by learning how to create single, compound, and multikey indexes as well as how to delete indexes. - -[View Details](https://learn.mongodb.com/courses/mongodb-indexes) - -## MongoDB Indexes II - -3 Hours - -Learn about the inner workings of indexes and how they help improve query performance. - -[View Details](https://learn.mongodb.com/courses/mongodb-indexes-ii) - -## MongoDB Logging Basics - -1 Hour - -Learn about MongoDB deployment logs in more detail. It covers log access, event interpretation, and verbosity, using both Atlas and self-managed deployments. You will also learn how to approach log rotation and retention. - -[View Details](https://learn.mongodb.com/courses/mongodb-logging-basics) - -## MongoDB Database Administrator Tools - -2.5 Hours - -Learn how to use a suite of command-line tools to administer and manage your MongoDB deployments. These tools fall into four categories: backup and restore, data import and export, diagnostics, and GridFS tools. - -[View Details](https://learn.mongodb.com/courses/mongodb-database-administrator-tools) - -## Self-Managed Server Administration - -1.5 Hours - -Learn how to administer a self-managed MongoDB deployment by using different tools and techniques. The lessons in this unit cover installing MongoDB, and configuring, interacting with, and managing MongoDB deployments. - -[View Details](https://learn.mongodb.com/courses/self-managed-server-administration) - -## MongoDB Database Metrics & Monitoring - -1 Hour - -Learn the basics of monitoring MongoDB Atlas and self-managed deployments. - -[View Details](https://learn.mongodb.com/courses/mongodb-database-metrics-monitoring) - -## Self-Managed Backup & Recovery - -1 Hour - -Learn about MongoDB's approaches to safeguarding and recovering data. You'll also learn the key elements of a backup plan and how to use snapshots and other utilities for backup and recovery. - -[View Details](https://learn.mongodb.com/courses/self-managed-backup-recovery) - -## Self-Managed Upgrades & Maintenance - -1 Hour - -Learn about the importance of upgrading and maintaining self-managed MongoDB deployments. - -[View Details](https://learn.mongodb.com/courses/self-managed-upgrades-maintenance) - -## Replication in MongoDB - -2 Hours - -Learn about MongoDB replication and how it enables data durability, data recovery, and improved maintenance cycles. - -[View Details](https://learn.mongodb.com/courses/replication-in-mongodb) - -## Self-Managed Database Security - -2 Hours - -Learn about basic security concepts and encryption. Then, you'll learn about the security features provided by MongoDB to help keep your deployments secure. - -[View Details](https://learn.mongodb.com/courses/mongodb-self-managed-database-security) - -## Getting Started with MongoDB Atlas - -1 Hour - -Learn about MongoDB Atlas, our multi-cloud developer data platform, its latest features, and how to deploy your first cluster. - -[View Details](https://learn.mongodb.com/courses/getting-started-with-mongodb-atlas) diff --git a/mongodb-uni/learning-paths/deploying-and-evaluating-gen-ai-apps.md b/mongodb-uni/learning-paths/deploying-and-evaluating-gen-ai-apps.md deleted file mode 100644 index 69993c520..000000000 --- a/mongodb-uni/learning-paths/deploying-and-evaluating-gen-ai-apps.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Deploying and Evaluating GenAI Apps Learning Badge -url: https://learn.mongodb.com/learning-paths/deploying-and-evaluating-genai-apps-learning-badge-path -metadata: - tags: - - developer - - ai - - genai - - generative ai - - learning path - - retrieval augmented generation - - rag - - evaluation - description: Learn about various strategies for chunking data, evaluating RAG applications, and deploying GenAI applications with MongoDB. ---- - -# Deploying and Evaluating GenAI Apps Learning Badge - -Take your GenAI applications from creation to full employment in this MongoDB learning path! Explore chunking strategies, deployment options, and more. - -This learning path helps you take your GenAI application from creation to full deployment, focusing on optimizing performance and evaluating results. You'll explore chunking strategies, performance evaluation techniques, and deployment options in MongoDB for both prototyping and production stages. - -We recommend completing the Building GenAI Apps Learning Badge Path before beginning this path. To earn your badge, complete the content in this learning path and then pass the short assessment at the end. You will receive an email with your official Credly badge and digital certificate within 24 hours. - -## Chunking Data for RAG Applications - -25 minutes - -Learn how to transform your data for retrieval augmented generation (RAG) applications using different chunking strategies. - -[View Details](https://learn.mongodb.com/courses/chunking-data-for-rag-applications) - -## Evaluating RAG Application Results - -20 minutes - -Learn how to evaluate your RAG applications for optimal performance. - -[View Details](https://learn.mongodb.com/courses/evaluating-rag-application-results) - -## Deployment Options for GenAI Apps with MongoDB - -20 minutes - -Learn how to take your Generative AI application from creation to deployment with MongoDB. - -[View Details](https://learn.mongodb.com/courses/deployment-options-for-genai-apps-with-mongodb) - -## Best Practices for Atlas Vector Search Performance - -20 minutes - -Review top tips to get the most out of your Atlas Vector Search instance. - -[View Details](https://learn.mongodb.com/courses/best-practices-for-atlas-vector-search-performance) diff --git a/mongodb-uni/learning-paths/java.md b/mongodb-uni/learning-paths/java.md deleted file mode 100644 index e4ad7279e..000000000 --- a/mongodb-uni/learning-paths/java.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: MongoDB Java Developer Path -url: https://learn.mongodb.com/learning-paths/mongodb-java-developer-path -metadata: - tags: - - developer - - Java - - learning path - programmingLanguage: java - description: Learn the basics of building modern applications with Java, using MongoDB as your database. ---- - -# MongoDB Java Developer Path - -This learning path contains a series of courses to teach you MongoDB skills. In this path, you’ll learn the basics of building modern applications with Java, using MongoDB as your database. - -When you complete this learning path, you will receive 50% off an Associate Developer certification exam attempt. - -## Start Here - Intro to MongoDB - -15 Minutes - -This unit gives an overview of MongoDB fundamentals, from the document model to CRUD operations to indexing, that you will learn during the Introduction to MongoDB course. - -[View Details](https://learn.mongodb.com/courses/start-here-introduction-to-mongodb) - -## Getting Started with MongoDB Atlas - -1 Hour - -Learn about MongoDB Atlas, our multi-cloud developer data platform, its latest features, and how to deploy your first cluster. - -[View Details](https://learn.mongodb.com/courses/getting-started-with-mongodb-atlas) - -## MongoDB and the Document Model - -1.25 Hours - -Want to learn more about MongoDB and the document model? In this unit, you'll learn how to manage MongoDB databases, collections, and documents. - -[View Details](https://learn.mongodb.com/courses/overview-of-mongodb-and-the-document-model) - -## MongoDB Data Modeling Intro - -45 Minutes - -Learn the basics of data modeling, the process of defining how data is stored and the relationships among different entities in your data, in MongoDB. - -[View Details](https://learn.mongodb.com/courses/introduction-to-mongodb-data-modeling) - -## Connecting to a MongoDB Database - -1 Hour - -Learn how to connect to MongoDB databases by using connection strings. Connection strings allow you to connect your cluster with the mongo shell, with Compass (our GUI that enables querying, optimizing and analyzing MongoDB data), and to an application. - -[View Details](https://learn.mongodb.com/courses/connecting-to-a-mongodb-database) - -## Connecting to MongoDB in Java - -.75 Hours - -Learn about the Java driver for MongoDB and how to use it to connect to your Java applications. - -[View Details](https://learn.mongodb.com/courses/connecting-to-mongodb-in-java) - -## MongoDB CRUD Operations: Insert and Find Documents - -1.75 Hours - -Learn how to create, find, and query MongoDB documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-insert-and-find-documents) - -## MongoDB CRUD Operations: Replace and Delete Documents - -1.75 Hours - -Learn how to replace and delete documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-replace-and-delete-documents) - -## MongoDB CRUD Operations: Modifying Query Results - -1.25 Hours - -Learn how to sort and limit query results and how to count documents in MongoDB. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-modifying-query-results) - -## MongoDB CRUD Operations in Java - -2.5 Hours - -Learn how to perform basic CRUD operations with the MongoDB Java driver. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-in-java) - -## MongoDB Aggregation - -1.75 Hours - -Learn how to create aggregation pipelines that enable you to analyze and summarize data by stringing together stages that filter, sort, group, and/or transform data. - -[View Details](https://learn.mongodb.com/courses/mongodb-aggregation) - -## MongoDB Aggregation with Java - -1 Hour - -Learn how to create aggregation pipelines with Java. - -[View Details](https://learn.mongodb.com/courses/mongodb-aggregation-with-java) - -## MongoDB Indexes - -1.75 Hours - -Learn how to improve MongoDB performance by learning how to create single, compound, and multikey indexes as well as how to delete indexes. - -[View Details](https://learn.mongodb.com/courses/mongodb-indexes) - -## MongoDB Atlas Search - -1.5 Hours - -Learn about MongoDB Atlas Search, a full text search feature that combines three systems - database, search engine, and sync mechanisms. - -[View Details](https://learn.mongodb.com/courses/mongodb-atlas-search) - -## MongoDB Transactions - -1 Hour - -Learn about ACID transactions in MongoDB and how they guarantee certain database operations happen together or not at all to ensure data integrity within the database. - -[View Details](https://learn.mongodb.com/courses/mongodb-transactions) - -## MongoDB Compass - -20 Minutes - -Learn how to use MongoDB Compass: the official Graphical User Interface built by -- and for -- MongoDB. This Learning Byte will cover how to set up and use MongoDB Compass to oversee and optimize your database. - -[View Details](https://learn.mongodb.com/courses/mongodb-compass) - -## Spring Data and MongoDB - -20 Minutes - -Learn how to use Spring Data with MongoDB, an open-source framework for developing Java applications. - -[View Details](https://learn.mongodb.com/courses/spring-data-and-mongodb) - -## MongoDB VS Code Extension - -20 Minutes - -Learn how to use the MongoDB VS Code extension to create, manage, and query MongoDB databases. - -[View Details](https://learn.mongodb.com/courses/mongodb-vs-code-extension) diff --git a/mongodb-uni/learning-paths/nodejs.md b/mongodb-uni/learning-paths/nodejs.md deleted file mode 100644 index 139f967c8..000000000 --- a/mongodb-uni/learning-paths/nodejs.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: MongoDB Node.js Developer Path -url: https://learn.mongodb.com/learn/learning-path/mongodb-nodejs-developer-path -metadata: - tags: - - developer - - node.js - programmingLanguage: javascript - description: Learn the basics of building modern applications with Node.js, using MongoDB as your database. ---- - -# MongoDB Node.js Developer Path - -This learning path contains a series of courses to teach you MongoDB skills. In this path, you'll learn the basics of building modern applications with Node.JS, using MongoDB as your database. - -## Start Here - Intro to MongoDB - -15 Minutes - -This unit gives an overview of MongoDB fundamentals, from the document model to CRUD operations to indexing, that you will learn during the Introduction to MongoDB course. - -[View Details](https://learn.mongodb.com/courses/start-here-introduction-to-mongodb) - -## Getting Started with MongoDB Atlas - -1 Hour - -Learn about MongoDB Atlas, our multi-cloud developer data platform, its latest features, and how to deploy your first cluster. - -[View Details](https://learn.mongodb.com/courses/getting-started-with-mongodb-atlas) - -## MongoDB and the Document Model - -1.25 Hours - -Want to learn more about MongoDB and the document model? In this unit, you'll learn how to manage MongoDB databases, collections, and documents. - -[View Details](https://learn.mongodb.com/courses/overview-of-mongodb-and-the-document-model) - -## MongoDB Data Modeling Intro - -45 Minutes - -Learn the basics of data modeling, the process of defining how data is stored and the relationships among different entities in your data, in MongoDB. - -[View Details](https://learn.mongodb.com/courses/introduction-to-mongodb-data-modeling) - -## Connecting to a MongoDB Database - -1 Hour - -Learn how to connect to MongoDB databases by using connection strings. Connection strings allow you to connect your cluster with the mongo shell, with Compass (our GUI that enables querying, optimizing and analyzing MongoDB data), and to an application. - -[View Details](https://learn.mongodb.com/courses/connecting-to-a-mongodb-database) - -## Connecting to MongoDB in Node.js - -1 Hour - -Learn about the Node.js driver for MongoDB and how to use it to connect to your Node.js applications. - -[View Details](https://learn.mongodb.com/learn/course/connecting-to-mongodb-in-nodejs) - -## MongoDB CRUD Operations: Insert and Find Documents - -1.75 Hours - -Learn how to create, find, and query MongoDB documents in the mongo shell. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-crud-operations-insert-and-find-documents) - -## MongoDB CRUD Operations: Replace and Delete Documents - -1.75 Hours - -Learn how to replace and delete documents in the mongo shell. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-crud-operations-replace-and-delete-document) - -## MongoDB CRUD Operations: Modifying Query Results - -1.25 Hours - -Learn how to sort and limit query results and how to count documents in MongoDB. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-crud-operations-modifying-query-results) - -## MongoDB CRUD Operations in Node.js - -2 Hours - -Learn how to perform basic CRUD operations with the MongoDB Node.js driver. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-crud-operations-in-nodejs) - -## MongoDB Aggregation - -1.75 Hours - -Learn how to create aggregation pipelines that enable you to analyze and summarize data by stringing together stages that filter, sort, group, and/or transform data. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-aggregation) - -## MongoDB Aggregation with Node.js - -1.25 Hours - -Learn how to create aggregation pipelines with Node.js. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-aggregation-with-nodejs) - -## MongoDB Indexes - -1.75 Hours - -Learn how to improve MongoDB performance by learning how to create single, compound, and multikey indexes as well as how to delete indexes. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-indexes) - -## MongoDB Atlas Search - -1.5 Hours - -Learn about MongoDB Atlas Search, a full text search feature that combines three systems - database, search engine, and sync mechanisms. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-atlas-search) - -## MongoDB Transactions - -1 Hour - -Learn about ACID transactions in MongoDB and how they guarantee certain database operations happen together or not at all to ensure data integrity within the database. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-transactions) - -## MongoDB Compass - -20 Minutes - -Learn how to use MongoDB Compass: the official Graphical User Interface built by -- and for -- MongoDB. This Learning Byte will cover how to set up and use MongoDB Compass to oversee and optimize your database. - -[View Details](https://learn.mongodb.com/learn/course/mongodb-compass) - -## MongoDB VS Code Extension - -20 Minutes - -Learn how to use the MongoDB VS Code extension to create, manage, and query MongoDB databases. - -[View Details](https://learn.mongodb.com/learn/enroll/5335c80d-bc32-495f-8789-c50764b87540) diff --git a/mongodb-uni/learning-paths/php.md b/mongodb-uni/learning-paths/php.md deleted file mode 100644 index 0db6ff672..000000000 --- a/mongodb-uni/learning-paths/php.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: MongoDB PHP Developer Path -url: https://learn.mongodb.com/learning-paths/mongodb-php-developer-path -metadata: - tags: - - developer - - PHP - - learning path - programmingLanguage: php - description: Learn the basics of building modern applications with PHP, using MongoDB as your database. ---- - -# MongoDB PHP Developer Path - -This learning path contains a series of units to teach you MongoDB skills. In this path, you’ll learn the basics of building modern applications with PHP, using MongoDB as your database. - -When you complete this learning path, you will receive 50% off an Associate Developer certification exam attempt. - -## Start Here - Intro to MongoDB - -15 Minutes - -This unit gives an overview of MongoDB fundamentals, from the document model to CRUD operations to indexing, that you will learn during the Introduction to MongoDB course. - -[View Details](https://learn.mongodb.com/courses/start-here-introduction-to-mongodb) - -## Getting Started with MongoDB Atlas - -1 Hour - -Learn about MongoDB Atlas, our multi-cloud developer data platform, its latest features, and how to deploy your first cluster. - -[View Details](https://learn.mongodb.com/courses/getting-started-with-mongodb-atlas) - -## MongoDB and the Document Model - -1.25 Hours - -Want to learn more about MongoDB and the document model? In this unit, you'll learn how to manage MongoDB databases, collections, and documents. - -[View Details](https://learn.mongodb.com/courses/overview-of-mongodb-and-the-document-model) - -## MongoDB Data Modeling Intro - -45 Minutes - -Learn the basics of data modeling, the process of defining how data is stored and the relationships among different entities in your data, in MongoDB. - -[View Details](https://learn.mongodb.com/courses/introduction-to-mongodb-data-modeling) - -## Connecting to a MongoDB Database - -1 Hour - -Learn how to connect to MongoDB databases by using connection strings. Connection strings allow you to connect your cluster with the mongo shell, with Compass (our GUI that enables querying, optimizing and analyzing MongoDB data), and to an application. - -[View Details](https://learn.mongodb.com/courses/connecting-to-a-mongodb-database) - -## Connecting to MongoDB in PHP - -1 Hour - -Learn about the PHP driver for MongoDB and how to use it to connect your PHP applications to your MongoDB database. - -[View Details](https://learn.mongodb.com/courses/connecting-to-mongodb-in-php) - -## MongoDB CRUD Operations: Insert and Find Documents - -1.75 Hours - -Learn how to create, find, and query MongoDB documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-insert-and-find-documents) - -## MongoDB CRUD Operations: Replace and Delete Documents - -1.75 Hours - -Learn how to replace and delete documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-replace-and-delete-documents) - -## MongoDB CRUD Operations: Modifying Query Results - -1.25 Hours - -Learn how to sort and limit query results and how to count documents in MongoDB. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-modifying-query-results) - -## MongoDB CRUD Operations in PHP - -2 Hours - -Learn how to perform basic create, read, update, and delete (CRUD) operations with the MongoDB PHP driver. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-in-php) - -## MongoDB Aggregation - -1.75 Hours - -Learn how to create aggregation pipelines that enable you to analyze and summarize data by stringing together stages that filter, sort, group, and/or transform data. - -[View Details](https://learn.mongodb.com/courses/mongodb-aggregation) - -## MongoDB Aggregation in PHP - -1 Hour - -Learn how to create aggregation pipelines with PHP by using MongoDB's aggregation framework. - -[View Details](https://learn.mongodb.com/courses/mongodb-aggregation-in-php) - -## MongoDB Indexes - -1.75 Hours - -Learn how to improve MongoDB performance by learning how to create single, compound, and multikey indexes as well as how to delete indexes. - -[View Details](https://learn.mongodb.com/courses/mongodb-indexes) - -## MongoDB Atlas Search - -1.5 Hours - -Learn about MongoDB Atlas Search, a full text search feature that combines three systems - database, search engine, and sync mechanisms. - -[View Details](https://learn.mongodb.com/courses/mongodb-atlas-search) - -## MongoDB Transactions - -1 Hour - -Learn about ACID transactions in MongoDB and how they guarantee certain database operations happen together or not at all to ensure data integrity within the database. - -[View Details](https://learn.mongodb.com/courses/mongodb-transactions) - -## MongoDB Compass - -20 Minutes - -Learn how to use MongoDB Compass: the official Graphical User Interface built by -- and for -- MongoDB. This Learning Byte will cover how to set up and use MongoDB Compass to oversee and optimize your database. - -[View Details](https://learn.mongodb.com/courses/mongodb-compass) - -## MongoDB VS Code Extension - -20 Minutes - -Learn how to use the MongoDB VS Code extension to create, manage, and query MongoDB databases. - -[View Details](https://learn.mongodb.com/courses/mongodb-vs-code-extension) diff --git a/mongodb-uni/learning-paths/python.md b/mongodb-uni/learning-paths/python.md deleted file mode 100644 index d1c96ee81..000000000 --- a/mongodb-uni/learning-paths/python.md +++ /dev/null @@ -1,163 +0,0 @@ ---- - -title: MongoDB Python Developer Path -url: https://learn.mongodb.com/learning-paths/mongodb-python-developer-path -metadata: - tags: - - developer - - python - programmingLanguage: python - description: Learn the basics of building modern applications with Python, using MongoDB as your database. ---- - -# MongoDB Python Developer Path - -This learning path contains a series of courses to teach you MongoDB skills. In this path, you'll learn the basics of building modern applications with Python, using MongoDB as your database. - -When you complete this learning path, you will receive 50% off an [Associate Developer certification](https://learn.mongodb.com/pages/mongodb-associate-developer-exam) exam attempt. - -## Start Here - Intro to MongoDB - -15 Minutes - -This unit gives an overview of MongoDB fundamentals, from the document model to CRUD operations to indexing, that you will learn during the Introduction to MongoDB course. - -[View Details](https://learn.mongodb.com/courses/start-here-introduction-to-mongodb) - -## Getting Started with MongoDB Atlas - -1 Hour - -Learn about MongoDB Atlas, our multi-cloud developer data platform, its latest features, and how to deploy your first cluster. - -[View Details](https://learn.mongodb.com/courses/getting-started-with-mongodb-atlas) - -## MongoDB and the Document Model - -1.25 Hours - -Want to learn more about MongoDB and the document model? In this unit, you'll learn how to manage MongoDB databases, collections, and documents. - -[View Details](https://learn.mongodb.com/courses/overview-of-mongodb-and-the-document-model) - -## MongoDB Data Modeling Intro - -45 Minutes - -Learn the basics of data modeling, the process of defining how data is stored and the relationships among different entities in your data, in MongoDB. - -[View Details](https://learn.mongodb.com/courses/introduction-to-mongodb-data-modeling) - -## Connecting to a MongoDB Database - -1 Hour - -Learn how to connect to MongoDB databases by using connection strings. Connection strings allow you to connect your cluster with the mongo shell, with Compass (our GUI that enables querying, optimizing and analyzing MongoDB data), and to an application. - -[View Details](https://learn.mongodb.com/courses/connecting-to-a-mongodb-database) - -## Connecting to MongoDB in Python - -1 Hour - -Learn about the Python driver for MongoDB and how to use it to connect to your Python applications. - -[View Details](https://learn.mongodb.com/courses/connecting-to-mongodb-in-python) - -## MongoDB CRUD Operations: Insert and Find Documents - -1.75 Hours - -Learn how to create, find, and query MongoDB documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-insert-and-find-documents) - -## MongoDB CRUD Operations: Replace and Delete Documents - -1.75 Hours - -Learn how to replace and delete documents in the mongo shell. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-replace-and-delete-documents) - -## MongoDB CRUD Operations: Modifying Query Results - -1.25 Hours - -Learn how to sort and limit query results and how to count documents in MongoDB. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-modifying-query-results) - -## MongoDB CRUD Operations in Python - -2 Hours - -Learn how to perform basic CRUD operations with the MongoDB Python driver. - -[View Details](https://learn.mongodb.com/courses/mongodb-crud-operations-in-python) - -## MongoDB Aggregation - -1.75 Hours - -Learn how to create aggregation pipelines that enable you to analyze and summarize data by stringing together stages that filter, sort, group, and/or transform data. - -[View Details](https://learn.mongodb.com/courses/mongodb-aggregation) - -## MongoDB Aggregation in Python - -1.25 Hours - -Learn how to create aggregation pipelines with Python. - -[View Details](https://learn.mongodb.com/courses/mongodb-aggregation-in-python) - -## MongoDB Indexes - -1.75 Hours - -Learn how to improve MongoDB performance by learning how to create single, compound, and multikey indexes as well as how to delete indexes. - -[View Details](https://learn.mongodb.com/courses/mongodb-indexes) - -## MongoDB Atlas Search - -1.5 Hours - -Learn about MongoDB Atlas Search, a full text search feature that combines three systems - database, search engine, and sync mechanisms. - -[View Details](https://learn.mongodb.com/courses/mongodb-atlas-search) - -## MongoDB Transactions - -1 Hour - -Learn about ACID transactions in MongoDB and how they guarantee certain database operations happen together or not at all to ensure data integrity within the database. - -[View Details](https://learn.mongodb.com/courses/mongodb-transactions) - -## MongoDB Compass - -Learning Byte | 20 Minutes - -Learn how to use MongoDB Compass: the official Graphical User Interface built by -- and for -- MongoDB. This Learning Byte will cover how to set up and use MongoDB Compass to oversee and optimize your database. - -[View Details](https://learn.mongodb.com/courses/mongodb-compass) - -## PyMongoArrow - -Learning Byte | 20 Minutes - -Learn how to enhance your MongoDB database's data analytics capability using PyMongoArrow, an extension to our PyMongo library. - -[View Details](https://learn.mongodb.com/courses/pymongoarrow) - -## MongoDB VS Code Extension - -Learning Byte | Luke Phillippi - -20 Minutes - -Learn how to use the MongoDB VS Code extension to create, manage, and query MongoDB databases. - -[View Details](https://learn.mongodb.com/courses/mongodb-vs-code-extension) diff --git a/packages/ingest-mongodb-public/src/sources/index.ts b/packages/ingest-mongodb-public/src/sources/index.ts index 1f271c330..302619ff2 100644 --- a/packages/ingest-mongodb-public/src/sources/index.ts +++ b/packages/ingest-mongodb-public/src/sources/index.ts @@ -25,7 +25,6 @@ import { } from "./DevCenterDataSource"; import { MakeMongoDbUniversityDataSourceParams, - filterOnlyPublicActiveTiCatalogItems, makeMongoDbUniversityDataSource, } from "./mongodb-university"; const { DEVCENTER_CONNECTION_URI, UNIVERSITY_DATA_API_KEY } = assertEnvVars( @@ -53,9 +52,9 @@ const mongoDbUniversitySourceConstructor = async () => { sourceName: "mongodb-university", baseUrl: "https://api.learn.mongodb.com/rest/catalog", apiKey: universityDataApiKey, - tiCatalogFilterFunc: filterOnlyPublicActiveTiCatalogItems, - metadata: { - tags: ["transcript"], + tiCatalogItems: { + publicOnly: true, + nestAssociatedContent: true, }, }; return makeMongoDbUniversityDataSource(universityConfig); diff --git a/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataApiClient.test.ts b/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataApiClient.test.ts index 8debef194..2c9b3fbfb 100644 --- a/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataApiClient.test.ts +++ b/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataApiClient.test.ts @@ -1,4 +1,7 @@ -import { makeMongoDbUniversityDataApiClient } from "./MongoDbUniversityDataApiClient"; +import { + makeMongoDbUniversityDataApiClient, + TiCatalogItem, +} from "./MongoDbUniversityDataApiClient"; import "dotenv/config"; jest.setTimeout(100000); const baseUrl = "https://api.learn.mongodb.com/rest/catalog"; @@ -10,16 +13,39 @@ describe("makeMongoDbUniversityDataApiClient()", () => { }); it("should return a MongoDbUniversityDataApiClient", () => { expect(mongodbUniversityDataApiClient).toBeDefined(); - expect(mongodbUniversityDataApiClient).toHaveProperty("getAllCatalogItems"); + expect(mongodbUniversityDataApiClient).toHaveProperty("getCatalogItems"); expect(mongodbUniversityDataApiClient).toHaveProperty("getAllVideos"); }); - it("should load all the catalog items from the MongoDB University Data API", async () => { - const allTiCatalogItems = - await mongodbUniversityDataApiClient.getAllCatalogItems(); - expect(allTiCatalogItems.data).toBeDefined(); - expect(allTiCatalogItems.metadata).toBeDefined(); - expect(allTiCatalogItems.metadata.has_more).toBe(false); - expect(allTiCatalogItems.data.length).toBeGreaterThan(0); + describe("getCatalogItems()", () => { + it("should load all the catalog items from the MongoDB University Data API", async () => { + const allTiCatalogItems = + await mongodbUniversityDataApiClient.getCatalogItems(); + expect(allTiCatalogItems.data).toBeDefined(); + expect(allTiCatalogItems.metadata).toBeDefined(); + expect(allTiCatalogItems.metadata.has_more).toBe(false); + expect(allTiCatalogItems.data.length).toBeGreaterThan(0); + }); + it("getCatalogItems should accept query params", async () => { + const tiCatalogItems = + await mongodbUniversityDataApiClient.getCatalogItems({ + publicOnly: true, + learningFormats: ["Learning Path", "Course"], + nestAssociatedContent: true, + }); + expect(tiCatalogItems.data).toBeDefined(); + expect(tiCatalogItems.data[0]["status"]).toBe("published"); + expect(tiCatalogItems.data[0]["legacy"]).toBe(false); + expect(tiCatalogItems.data[0]["in_development"]).toBe(false); + expect(tiCatalogItems.data[0]["microsites"]).toContain("University"); + expect(["Learning Path", "Course"]).toContain( + tiCatalogItems.data[0]["learning_format"] + ); + const nestedContent = tiCatalogItems.data[0][ + "nested_content" + ] as TiCatalogItem[]; + expect(nestedContent).toBeDefined(); + expect(nestedContent!.length).toBeGreaterThan(0); + }); }); it("should load all the videos from the MongoDB University Data API", async () => { const allVideos = await mongodbUniversityDataApiClient.getAllVideos(); diff --git a/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataApiClient.ts b/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataApiClient.ts index 3e3fa179e..eb6a461ed 100644 --- a/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataApiClient.ts +++ b/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataApiClient.ts @@ -28,8 +28,12 @@ export interface TiCatalogItem { IDs of labs associated with the catalog item. */ associated_labs: string[]; - // TODO: is this always null? - associated_content: null | unknown; + /* + IDs of content associated with the catalog item. + This is used for Learning Paths and Courses. Other learning formats + do not have associated content. + */ + associated_content?: string[] | null; /** Whether or not the catalog item is in development. */ @@ -40,6 +44,20 @@ export interface TiCatalogItem { about the sections and lessons. */ sections: TiCatalogSection[]; + /** + Description of the course topics covered. + */ + description?: string; + /** + Approximate time it takes to complete the course. + */ + duration?: string; + /** + Nested content for the catalog item. This is used for + Learning Paths and Courses, which are made up of multiple items such as + Units and Learning Bytes. + */ + nested_content?: TiCatalogItem[]; } type TiCatalogLearningFormat = @@ -115,7 +133,7 @@ interface ResponseMetadata { filter: null | unknown; } -interface GetAllCatalogItemsResponseData { +interface GetCatalogItemsResponseData { data: TiCatalogItem[]; metadata: ResponseMetadata; } @@ -135,7 +153,7 @@ export interface MongoDbUniversityDataApiClient { Load all the catalog items from the MongoDB University Data API. */ - getAllCatalogItems(): Promise; + getCatalogItems(): Promise; /** Load all the videos from the MongoDB University Data API. */ @@ -157,12 +175,29 @@ export function makeMongoDbUniversityDataApiClient({ }; return { - async getAllCatalogItems() { - const response = await fetch(`${baseUrl}/ti`, { + async getCatalogItems({ + publicOnly = true, + learningFormats, + nestAssociatedContent = true, + }: { + publicOnly?: boolean; + learningFormats?: string[]; + nestAssociatedContent?: boolean; + } = {}) { + const search_params = new URLSearchParams([ + ["public_only", publicOnly.toString()], + ["nest_associated_content", nestAssociatedContent.toString()], + ]); + if (learningFormats) { + learningFormats.forEach((format) => + search_params.append("learning_formats", format) + ); + } + const response = await fetch(`${baseUrl}/ti?${search_params}`, { headers, }); const json = await response.json(); - return json as GetAllCatalogItemsResponseData; + return json as GetCatalogItemsResponseData; }, async getAllVideos() { let offset = 0; diff --git a/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataSource.test.ts b/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataSource.test.ts index 3910c0a75..1cf114f6c 100644 --- a/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataSource.test.ts +++ b/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataSource.test.ts @@ -1,8 +1,5 @@ import "dotenv/config"; -import { - filterOnlyPublicActiveTiCatalogItems, - makeMongoDbUniversityDataSource, -} from "./MongoDbUniversityDataSource"; +import { makeMongoDbUniversityDataSource } from "./MongoDbUniversityDataSource"; jest.setTimeout(100000); const baseUrl = "https://api.learn.mongodb.com/rest/catalog"; @@ -14,7 +11,6 @@ describe("makeMongoDBUniversityDataSource()", () => { sourceName: "testSource", baseUrl, apiKey, - tiCatalogFilterFunc: () => true, }); expect(dataSource.name).toBe("testSource"); }); @@ -23,7 +19,6 @@ describe("makeMongoDBUniversityDataSource()", () => { sourceName: "testSource", baseUrl, apiKey, - tiCatalogFilterFunc: () => true, }); const pages = await dataSource.fetchPages(); expect(pages.length).toBeGreaterThan(0); @@ -33,28 +28,15 @@ describe("makeMongoDBUniversityDataSource()", () => { sourceName: "testSource", baseUrl, apiKey, - tiCatalogFilterFunc: filterOnlyPublicActiveTiCatalogItems, }); const pages = await dataSource.fetchPages(); expect(pages.length).toBeGreaterThan(0); }); - it("should not fetch any pages for a data source with a filter that doesn't match", async () => { - const dataSource = makeMongoDbUniversityDataSource({ - sourceName: "testSource", - baseUrl, - apiKey, - tiCatalogFilterFunc: (item) => - item.microsites.includes("DefinitelyNotARealMicrosite👽🧙🏓👾"), - }); - const pages = await dataSource.fetchPages(); - expect(pages).toHaveLength(0); - }); it("should add metadata to each page in data source", async () => { const dataSource = makeMongoDbUniversityDataSource({ sourceName: "testSource", baseUrl, apiKey, - tiCatalogFilterFunc: filterOnlyPublicActiveTiCatalogItems, metadata: { foo: "bar", }, diff --git a/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataSource.ts b/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataSource.ts index 98aad9811..289a3dce4 100644 --- a/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataSource.ts +++ b/packages/ingest-mongodb-public/src/sources/mongodb-university/MongoDbUniversityDataSource.ts @@ -1,10 +1,7 @@ import { PageMetadata } from "mongodb-rag-core"; import { DataSource } from "mongodb-rag-core/dataSources"; import { makeUniversityPages } from "./makeUniversityPages"; -import { - TiCatalogItem, - makeMongoDbUniversityDataApiClient, -} from "./MongoDbUniversityDataApiClient"; +import { makeMongoDbUniversityDataApiClient } from "./MongoDbUniversityDataApiClient"; /** Parameters for constructing a MongoDB University Data API source. @@ -27,15 +24,32 @@ export interface MakeMongoDbUniversityDataSourceParams { apiKey: string; /** - Filter function for filtering out items from the MongoDB University - catalog. For example, you may want to only ingest items that are - in public content. - - To only ingest public, published, and non-legacy - MongoDB University content, use the - {@link filterOnlyPublicActiveTiCatalogItems} filter function. + Filter parameters for University's /catalog/ti endpoint + of the MongoDB University Data API. */ - tiCatalogFilterFunc: (item: TiCatalogItem) => boolean; + tiCatalogItems?: { + /** + Filter parameter for filtering out items from the MongoDB University + catalog. For example, you may want to only ingest items that are + in public content. + + To only ingest public, published, and non-legacy + MongoDB University content, set public_pnly to `true` + + > ⚠️ **Important** ⚠️ + > + > You should include *only* this content or a subset of it + > in externally facing applications. + */ + publicOnly?: boolean; + + /** + Whether to nest associated content in the catalog items. + If true, content with associated content (such as Learning Paths and Courses) + will have a nested_content field of type TiCatalogItems[]. + */ + nestAssociatedContent?: boolean; + }; /** Metadata for the MongoDB University Data API source. @@ -44,23 +58,6 @@ export interface MakeMongoDbUniversityDataSourceParams { metadata?: PageMetadata; } -/** - Filter function to only include public, published, - and non-legacy MongoDB University content. - - > ⚠️ **Important** ⚠️ - > - > You should include *only* this content or a subset of it - > in externally facing applications. - */ -export const filterOnlyPublicActiveTiCatalogItems: MakeMongoDbUniversityDataSourceParams["tiCatalogFilterFunc"] = - (item: TiCatalogItem) => - item.microsites.includes("University") && - item.status === "published" && - item.in_development === false && - item.legacy === false && - item.associated_videos.length > 0; - /** Data source constructor function for ingesting data from the MongoDB University Data API. @@ -76,11 +73,11 @@ export function makeMongoDbUniversityDataSource( baseUrl: params.baseUrl, apiKey: params.apiKey, }); - const { data: allTiCatalogItems } = - await uniDataApiClient.getAllCatalogItems(); - const tiCatalogItems = allTiCatalogItems.filter( - params.tiCatalogFilterFunc - ); + const { data: tiCatalogItems } = await uniDataApiClient.getCatalogItems({ + publicOnly: params.tiCatalogItems?.publicOnly, + nestAssociatedContent: + params.tiCatalogItems?.nestAssociatedContent, + }); const { data: videos } = await uniDataApiClient.getAllVideos(); const universityPages = makeUniversityPages({ sourceName: params.sourceName, diff --git a/packages/ingest-mongodb-public/src/sources/mongodb-university/makeUniversityPages.test.ts b/packages/ingest-mongodb-public/src/sources/mongodb-university/makeUniversityPages.test.ts index a58401404..bfd96dec4 100644 --- a/packages/ingest-mongodb-public/src/sources/mongodb-university/makeUniversityPages.test.ts +++ b/packages/ingest-mongodb-public/src/sources/mongodb-university/makeUniversityPages.test.ts @@ -2,7 +2,9 @@ import fs from "fs"; import Path from "path"; import { convertVideoTranscriptFromSrtToTxt, + generateContentDescriptionMarkdown, makeUniversityPages, + UNI_BASE_URL, } from "./makeUniversityPages"; import { TiCatalogItem, @@ -48,7 +50,7 @@ describe("makeUniversityPages()", () => { }); const samplePage = pages[0]; expect(samplePage.url).toBe( - "https://learn.mongodb.com/learn/course/getting-started-with-mongodb-atlas/lesson-1-introduction-to-mongodb-atlas-the-developer-data-platform/learn" + `${UNI_BASE_URL}/learn/course/getting-started-with-mongodb-atlas/lesson-1-introduction-to-mongodb-atlas-the-developer-data-platform/learn` ); expect(samplePage.title).toBe( "Getting Started with MongoDB Atlas - Lesson 1: Introduction to MongoDB Atlas, the Developer Data Platform - Learn" @@ -59,14 +61,20 @@ describe("makeUniversityPages()", () => { expect(samplePage.body).not.toMatch( /^\d+\n\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}\n/gm ); - expect(samplePage.metadata).toEqual({ - foo: "bar", - tags: ["foo", "bar"], - courseTitle: "Getting Started with MongoDB Atlas", - sectionTitle: - "Lesson 1: Introduction to MongoDB Atlas, the Developer Data Platform", - lessonTitle: "Learn", - }); + expect(samplePage.metadata).toHaveProperty("foo", "bar"); + expect(samplePage.metadata).toHaveProperty( + "tags", + expect.arrayContaining(["foo", "bar"]) + ); + expect(samplePage.metadata).toHaveProperty( + "courseTitle", + "Getting Started with MongoDB Atlas" + ); + expect(samplePage.metadata).toHaveProperty( + "sectionTitle", + "Lesson 1: Introduction to MongoDB Atlas, the Developer Data Platform" + ); + expect(samplePage.metadata).toHaveProperty("lessonTitle", "Learn"); // Don't include these tags that are returned by the API const tagsSet = new Set(samplePage.metadata?.tags); expect(tagsSet.has("Intro to MongoDB")).toBe(false); @@ -89,3 +97,63 @@ describe("convertVideoTranscriptFromSrtToTxt()", () => { expect(convertedTranscript).toEqual(txtTranscript); }); }); + +describe("generateContentDescriptionMarkdown()", () => { + const expected_markdown = `# Atlas Search + +This course is designed to help you use Atlas Search in your applications for a seamless full-text search experience. You’ll learn how to write Atlas Search queries and manage search indexes by using the Atlas UI, CLI, and MongoDB Shell. Then you’ll build on this foundation by writing advanced search queries that use the compound operator, nesting, and features such as fuzzy search and autocomplete. + +## Managing Atlas Search Indexes + +45 Minutes + +Learn how to manage Atlas Search indexes with the Atlas UI, Atlas CLI, and MongoDB Shell. + +[View Details](https://learn.mongodb.com/courses/managing-atlas-search-indexes) + +## Autocomplete with Atlas Search + +1.5 Hours + +Learn how to enhance user experience by adding the autocomplete functionality to Atlas Search indexes. As one of the most common features of a search platform, autocomplete is easy to include in any application using Atlas Search. + +[View Details](https://learn.mongodb.com/courses/autocomplete-with-atlas-search) + +## Introduction to Atlas Search + +2.25 Hours + +Learn how to use Atlas Search to build search functionality for your application. You'll learn how to define a search index, create a search query, and view search metadata. + +[View Details](https://learn.mongodb.com/courses/introduction-to-atlas-search) + +## Analyzers in Atlas Search + +1.75 Hours + +Learn all about analyzers in Atlas Search and the crucial role they play in making search results relevant and accurate. + +[View Details](https://learn.mongodb.com/courses/analyzers-in-atlas-search) + +## Advanced Queries with Atlas Search + +3 Hours + +Learn how to write Atlas Search queries using features such as the compound operator, sorting customization, and fuzzy search. + +[View Details](https://learn.mongodb.com/courses/advanced-queries-with-atlas-search)`; + + it("should generate Markdown content for a Learning Path or Course", () => { + const tiCatalogItem = JSON.parse( + fs.readFileSync( + Path.resolve( + SRC_ROOT, + "../testData/sampleUniversityCatalogItemCourse.json" + ), + "utf-8" + ) + ) as TiCatalogItem; + const markdown = generateContentDescriptionMarkdown({ tiCatalogItem }); + expect(markdown).toEqual(expected_markdown); + }); +}); diff --git a/packages/ingest-mongodb-public/src/sources/mongodb-university/makeUniversityPages.ts b/packages/ingest-mongodb-public/src/sources/mongodb-university/makeUniversityPages.ts index 2a18cb52c..e3cd7ab0c 100644 --- a/packages/ingest-mongodb-public/src/sources/mongodb-university/makeUniversityPages.ts +++ b/packages/ingest-mongodb-public/src/sources/mongodb-university/makeUniversityPages.ts @@ -4,6 +4,8 @@ import { UniversityVideo, } from "./MongoDbUniversityDataApiClient"; +export const UNI_BASE_URL = "https://learn.mongodb.com"; + /** Helper function to create {@link Page} objects for MongoDB University content. @@ -45,6 +47,32 @@ function makeCatalogItemPages({ }): Page[] { const pages: Page[] = []; for (const catalogItem of tiCatalogItems) { + /* Create page for higher level courses. + * Higher level courses are Leanring Paths and Courses that have nested content. + * Nested content is made up of other TiCatalogItems such as Units and Learning Bytes. + * Note: Higher level courses do not have videos, but their nested content does. + */ + if ( + catalogItem.learning_format === "Learning Path" || + catalogItem.learning_format === "Course" + ) { + const page: Page = { + sourceName, + url: `${UNI_BASE_URL}/learning-paths/${catalogItem.slug}`, + title: catalogItem.name, + format: "md", + body: generateContentDescriptionMarkdown({ + tiCatalogItem: catalogItem, + }), + metadata: { + ...(metadata ?? {}), + tags: [...(metadata?.tags ?? []), "landing page"], + learningFormat: catalogItem.learning_format, + }, + }; + pages.push(page); + continue; + } for (const section of catalogItem.sections ?? []) { for (const lesson of section.lessons ?? []) { // Don't create a page for lessons without videos. @@ -82,7 +110,7 @@ function makeCatalogItemPages({ // `catalogItem.tags`) here and instead only use tags we specify in // our config. The API tags may contain internal or customer-specific // data that we don't want to include in the embeddings. - tags: metadata?.tags ?? [], + tags: [...(metadata?.tags ?? []), "transcript"], courseTitle, sectionTitle, lessonTitle, @@ -163,7 +191,7 @@ function makeUniversityPageUrl({ sectionSlug: string; lessonSlug: string; }) { - return `https://learn.mongodb.com/learn/course/${catalogItemSlug}/${sectionSlug}/${lessonSlug}`; + return `${UNI_BASE_URL}/learn/course/${catalogItemSlug}/${sectionSlug}/${lessonSlug}`; } /** @@ -181,3 +209,34 @@ export function convertVideoTranscriptFromSrtToTxt(transcript: string): string { .join(" ") .trim(); } + +/** + Helper function to create Markdown content for MongoDB University Learning Paths and Courses + based on titles, duration, and descriptions. + */ +export function generateContentDescriptionMarkdown({ + tiCatalogItem, +}: { + tiCatalogItem: TiCatalogItem; +}): string { + const { name, description, nested_content } = tiCatalogItem; + const title = `# ${name}`; + let markdownContent = title + "\n\n" + description + "\n\n"; + if (nested_content) { + for (const nested of nested_content) { + const { name, duration, description, slug } = nested; + const title = `## ${name}`; + const link = `[View Details](${UNI_BASE_URL}/courses/${slug})`; + markdownContent += + title + + "\n\n" + + duration + + "\n\n" + + description + + "\n\n" + + link + + "\n\n"; + } + } + return markdownContent.slice(0, -2); // Remove the last 2 newlines +} diff --git a/packages/ingest-mongodb-public/testData/sampleUniversityCatalogItemCourse.json b/packages/ingest-mongodb-public/testData/sampleUniversityCatalogItemCourse.json new file mode 100644 index 000000000..c9a49de16 --- /dev/null +++ b/packages/ingest-mongodb-public/testData/sampleUniversityCatalogItemCourse.json @@ -0,0 +1,194 @@ + { + "id": "662324c0f7e88b479ae8a139", + "ti_id": "b63d3b95-ee8b-46ac-b5cf-b0a75a79115b", + "associated_videos": [], + "learning_format": "Course", + "name": "Atlas Search", + "slug": "atlas-search", + "status": "published", + "tags": [ + "University", + "30for30AI", + "startups", + "Section3" + ], + "legacy": false, + "microsites": [ + "University" + ], + "associated_labs": [], + "associated_content": [ + "07b46106-9afc-4ca2-bb61-902e39e85d91", + "284c01f0-435c-464d-a28c-8cc1bdbfccd5", + "86e78d84-e564-4257-808b-bb6ab55f7163", + "345718b3-a9fb-48dc-a5af-497cfe4b4d8c", + "3bd63328-bc9d-46f4-8cc2-3f90e47271e1" + ], + "in_development": false, + "created_at": "2022-11-07T16:31:36.950000", + "updated_at": "2024-08-22T16:06:22.975000", + "sections": null, + "nested_content": [ + { + "ti_id": "07b46106-9afc-4ca2-bb61-902e39e85d91", + "associated_labs": [ + "4qagnqvguxxf" + ], + "associated_videos": [ + "ymjb7tmqen", + "9u90oz44zn", + "ctr9in4dy4", + "vr2sq8oelq" + ], + "created_at": "2024-02-13T20:40:08", + "in_development": false, + "learning_format": "Unit", + "legacy": false, + "microsites": [ + "University" + ], + "name": "Managing Atlas Search Indexes", + "slug": "managing-atlas-search-indexes", + "status": "published", + "tags": [ + "University" + ], + "updated_at": "2024-10-24T09:08:02.487000", + "description": "Learn how to manage Atlas Search indexes with the Atlas UI, Atlas CLI, and MongoDB Shell.", + "duration": "45 Minutes" + }, + { + "ti_id": "284c01f0-435c-464d-a28c-8cc1bdbfccd5", + "associated_labs": [ + "clkzdvzfxoex", + "fa87pxktvqsd" + ], + "associated_videos": [ + "pwsm9qsga3", + "f5ql9s1nnf", + "wadmh82yzh", + "flspzs9473", + "6k2soevx9s", + "ue5urkvggd" + ], + "created_at": "2024-03-19T14:14:43", + "in_development": false, + "learning_format": "Unit", + "legacy": false, + "microsites": [ + "University" + ], + "name": "Autocomplete with Atlas Search", + "slug": "autocomplete-with-atlas-search", + "status": "published", + "tags": [ + "University" + ], + "updated_at": "2024-10-24T09:55:07.390000", + "description": "Learn how to enhance user experience by adding the autocomplete functionality to Atlas Search indexes. As one of the most common features of a search platform, autocomplete is easy to include in any application using Atlas Search. ", + "duration": "1.5 Hours" + }, + { + "ti_id": "86e78d84-e564-4257-808b-bb6ab55f7163", + "associated_labs": [ + "ozhr0khllvxr", + "urcg95eku1zc", + "xezzrvmsmee4", + "gca7sb5ej4ow" + ], + "associated_videos": [ + "kc0z7qa6rl", + "1h6wbujz2a", + "1w0v4c5kxm", + "mk1ye7noes", + "mlp6c026b9", + "0d1f67gatw", + "fsr36vjkhc" + ], + "created_at": "2024-01-24T19:40:53", + "in_development": false, + "learning_format": "Unit", + "legacy": false, + "microsites": [ + "University" + ], + "name": "Introduction to Atlas Search", + "slug": "introduction-to-atlas-search", + "status": "published", + "tags": [ + "University" + ], + "updated_at": "2024-10-24T15:46:00.298000", + "description": "Learn how to use Atlas Search to build search functionality for your application. You'll learn how to define a search index, create a search query, and view search metadata. ", + "duration": "2.25 Hours" + }, + { + "ti_id": "345718b3-a9fb-48dc-a5af-497cfe4b4d8c", + "associated_labs": [ + "a0ygyydtbud4", + "cxabu5tanhdm", + "9z3plo2qrist" + ], + "associated_videos": [ + "vqs1imgmlf", + "b0jbegezew", + "9ja1tn2gdq", + "v7e9pmvwba", + "0kspc3jo2n", + "eypdnlq5ue", + "brwjlcgbmb" + ], + "created_at": "2024-03-19T14:14:05", + "in_development": false, + "learning_format": "Unit", + "legacy": false, + "microsites": [ + "University" + ], + "name": "Analyzers in Atlas Search", + "slug": "analyzers-in-atlas-search", + "status": "published", + "tags": [ + "University" + ], + "updated_at": "2024-10-24T10:00:54.587000", + "description": "Learn all about analyzers in Atlas Search and the crucial role they play in making search results relevant and accurate. ", + "duration": "1.75 Hours" + }, + { + "ti_id": "3bd63328-bc9d-46f4-8cc2-3f90e47271e1", + "associated_labs": [ + "hqbcqfvnz81w", + "yfnwp9yqbgxz", + "y7nixqbxyyya", + "fljo0nlprtye", + "aut0ld46qzn7" + ], + "associated_videos": [ + "8hsvk8g8ox", + "wl65w7q1fv", + "28tztix5rs", + "nel49pq4aj", + "ppa73r17hy", + "qf2zfcbqnc" + ], + "created_at": "2024-03-19T14:13:04", + "in_development": false, + "learning_format": "Unit", + "legacy": false, + "microsites": [ + "University" + ], + "name": "Advanced Queries with Atlas Search", + "slug": "advanced-queries-with-atlas-search", + "status": "published", + "tags": [ + "University" + ], + "updated_at": "2024-10-24T10:10:17.433000", + "description": "Learn how to write Atlas Search queries using features such as the compound operator, sorting customization, and fuzzy search. ", + "duration": "3 Hours" + } + ], + "description": "This course is designed to help you use Atlas Search in your applications for a seamless full-text search experience. You’ll learn how to write Atlas Search queries and manage search indexes by using the Atlas UI, CLI, and MongoDB Shell. Then you’ll build on this foundation by writing advanced search queries that use the compound operator, nesting, and features such as fuzzy search and autocomplete. " + } \ No newline at end of file