MongoDB/devcenter-articles huggingface dataset:
# Go-FIFA

## Creators
Dhiren and Nirbhay contributed this project. 

## About the project

GoFifa is a PHP-Mongo based Football Stats Client. GoFifa's data has been sourced from Kaggle, Sofifa and FifaIndex. Data has been stored in MongoDB on AWS. The application is hosted on Heroku and deployed using GitHub as a VCS.

## Inspiration

The project was part of my course called ‘knowledge representation techniques.’ The assignment was to create a project that used the basic features of MongoDB.  Together with my teammate, we decided to make the best use of this opportunity. We thought about what we could do; we needed proper structured and useful quality data, and also supported the idea behind MongoDB. We went to a lot of sites with sample data sites. 

We went for soccer because my teammate is a huge soccer fan. We found this sample data, and we decided to use it for our project. 

:youtube]{vid=YGNDGTnQdNQ}

## Why MongoDB?

As mentioned briefly, we were asked to use MongoDB in our project. We decided to dive deeper into everything that MongoDB has to offer. This project uses the most known querying techniques with MongoDB, and other features like geodata,  leaflet js, grid fs, depth filtering, mapping crawled data to MongoDB, and references, deployment, etc.  It can prove to be an excellent start for someone who wants to learn how to use MongoDB effectively and a rest client on top of it. 

![

## How it works

GoFifa is a web application where you can find soccer players and learn more about them. 

 All in all, we created a project that was a full-stack. 

First, we started crawling the data, so we created a crawler that feeds the data into the database as chunks.  And we also use the idea behind references. When querying, we also made sure what we were querying with wildcards next to the normal querying. 

We wanted to create a feature that can be used in the real world. That’s why we also decided to use geo queries and gridFS.  It turned into a nice full-stack app. And top it off, the best part has been that since that project, we’ve used MongoDB in so many places. 

## Challenges and learnings

I (Nirbhay) learned a lot from this project. I was a more PHP centric person. Now that's not the case anymore, but I was. And it was a little difficult to integrate the PHP driver at the time. Now it's all become very easy.  More and more articles are written about bothered about all those codes. So it's all become very easy. But at that time, it wasn't easy. But other than that, I would say:  the documentation provided by MongoDB was pretty good. It helps understand things to a certain level. I don't think that I've used all the features yet, but I'll try to use them more in the future.
# myLeG

## Creator
Justus Alvermann, student in Germany, developed this project.

## About the Project
The project shows the substitutions of my school in a more readable way and also sorted, so the users only see the entries that are relevant to them. 
It can also send out push notifications for new or changed substitutions and has some information about the current COVID regulations

## Inspiration
I didn't like the current way substitutions are presented and also wanted a way to be notified about upcoming substitutions. In addition, I was tired of coming to school even though the first lessons were cancelled because I forgot to look at the substitution schedule. 
 
## Why MongoDB?
Since not every piece of information (e.g. new room for cancelled lessons) on the substitution plan is available for all entries, a document-based solution was the only sensible database. 

## How It Works

Every 15 minutes, a NodeJS script crawls the substitution plan of my school and saves all new or changed entires into my MongoDB collection. This script also sends out push notifications via the web messaging api to the users who subscribed to them.
I used Angular for the frontend and Vercel Serverless functions for the backend. 
The serverless functions get the information from the database and can be queried via their Rest API. 
The login credentials are stored in MongoDB too and logins are saved as JWTs in the users cookies.
# Trends analyser

## Creators
Osama Bin Junaid contributed this project.

## About the Project
The project uses twitter api to fetch realtime trends data and save it into MongoDB for later analysis.
 
 ## Inspiration
 In today's world its very hard to keep up with everything thats happening around us. Twitter is one of the first places where things gets reported so my motive was to build an application through which one can see all trends at one place, and also why something is trending.(trying to solve this one now)
 
 ## Why MongoDB?
 I used MongoDB because of its Document nature, I can directly save my JSON objects without breaking down into tables, and also because its easy to design schemas and their relationships using MongoDB
 
 ## How It Works
 Its works by repeatedly invoking 8 serverless functions on ibmcloud at 15 minutes interval, these functions call twitter apis get the data, and do little transformation before saving the data to Mongodb. 

The backend then serves the data to the react frontend.

GitHub repo frontend: https://github.com/ibnjunaid/trendsFunction
GitHub repo backend: https://github.com/ibnjunaid/trendsBackend
# Final Space API

## Creator
Ashutosh Kumar Singh contributed this project. 

## About the Project

The Final Space API is based on the television show Final Space by Olan Rogers from TBS. From talking cats to evil aliens, the animated show tells the intergalactic adventures of Gary Goodspeed and his alien friend Mooncake as they unravel the mystery of "Final Space". The show can be viewed, amongst other places, on TBS, AdultSwim, and Netflix.

All data of this API, such as character info, is obtained from the Final Space wiki. More data such as season and episode information is planned for future release. This data can be used for your own projects such as fan pages or any way you see fit.

All this information is available through a RESTful API implemented in NodeJS. This API returns data in a friendly json format.

The Final Space API is maintained as an open source project on GitHub. More information about contributing can be found in the readme.
 
 ## Inspiration

During Hacktoberfest 2020, I want to create and maintain a project and not just contribute during the hacktoberfest.
Final Space is one of my favorite animated television shows. I took inspiration from Rick & Morty API and tried to build the MVP of the API. 

The project saw huge cntributions from developers all around the world and finished the version 1 of the API by the end of October.
 
 ## Why MongoDB?
 
I wanted that data should be accessed quickly and can be easily maintained. MongoDB was my obvious choice, the free cluster is more than enough for all my needs. I believe I can increase the data hundred times and still find that Free Cluster is meeting my needs.
 
 ## How It Works
 
 You can fetch the data by making a POST request to any of the endpoints.
 
There are four available resources:

Character: used to get all the characters.
https://finalspaceapi.com/api/v0/character

Episode: used to get all the episodes.
https://finalspaceapi.com/api/v0/episode

Location: used to get all the locations.
https://finalspaceapi.com/api/v0/location

Quote: used to get quotes from Final Space.
https://finalspaceapi.com/api/v0/quote
# A Plan for MongoDB and JRuby

## TLDR
MongoDB will continue to support JRuby.

## Background
In April 2021, our Ruby team began to discuss the possibility of removing MongoDBs official support for JRuby. At the time, we decided to shelve these discussions and revisit in a year. In March 2022, right on schedule, we began examining metrics and reviewing user feedback around JRuby, as well as evaluating our backlog of items around this runtime.

JRuby itself is still actively maintained and used by many Ruby developers, but our own user base tends toward MRI/CRuby or ‘vanilla Ruby’. We primarily looked at telemetry from active MongoDB Atlas clusters, commercial support cases, and a number of other sources, like Stack Overflow question volume, etc.

We decided based on the data available that it would be safe to drop support for JRuby from our automated tests, and stop accepting pull requests related to this runtime.

We did not expect this decision to be controversial.

## User Feedback
As a company that manages numerous open source projects we work in a public space. Our JIRA and GitHub issues are available to peruse. And so it was not very long before a user commented on this work and asked us *not to do this please.*

One of the core JRuby maintainers, Charles Nutter, also reached out on the Ruby ticket to discuss this change.

Upon opening a pull request to action this decision, the resulting community feedback encouraged us to reconsider this decision. As the goal of any open source project is to bolster adoption and engagement ultimately we chose to reverse course for the time being, especially seeing as JRuby had subsequently tweeted out their upcoming 9.4 release would be compatible with both Rails 7 and Ruby 3.1.

Following the JRuby announcement, TruffleRuby 22.1 was released, so it seems the JVM-based Ruby ecosystem is more active than we anticipated.

You can see the back and forth on RUBY-2781 and RUBY-2960.

## Decision
We decided to reverse our decision around JRuby, quite simply, because the community asked us to.  Our decisions should be informed by the open source community - not just the developers who work at MongoDB - and if we are too hasty, or wrong, we would like to be able to hear that without flinching and respond appropriately.

So. Though we weren’t at RailsConf 22 this year, know that if your next application is built using JRuby you should be able to count on MongoDB Atlas being ready to host your application’s data.
# From Zero to Mobile Developer in 40 Minutes

Are you an experienced non-mobile developer interested in writing your first iOS app? Or maybe a mobile developer wondering how to enhance your app or simplify your code using Realm and SwiftUI?

I've written a number of tutorials aimed at these cohorts, and I've published a video that attempts to cover everything in just 40 minutes.

I start with a brief tour of the anatomy of a mobile app—covering both the backend and frontend components.

The bulk of the tutorial is devoted to a hands-on demonstration of building a simple chat app. The app lets users open a chatroom of their choice. Once in a chat room, users can share messages with other members.

While the app is simple, it solves some complex distributed data issues, with real-time syncing of data between your backend database and your mobile apps. Realm is also available for other platforms, such as Android, so the same back end and data can be shared with all versions of your app.

:youtubeVideo tutorial showing how to build your first mobile iOS/iPhone app using Realm and SwiftUI]{vid=lSp95xkvo1U}

You can find all of the code from the tutorial in the [repo.

If this tutorial whet your appetite and you'd like to see more (and maybe try it for yourself), then I'm running a more leisurely(?) two-hour workshop at MongoDB World 2022—From 0 to Mobile Developer in 2 Hours with Realm and SwiftUI, where I build an all-new app. There's still time to register for MongoDB World 2002. **Use code AndrewMorgan25 for a 25% discount**.
# MongoDB PHP Extension 1.13.0 Released

The PHP team is happy to announce that version 1.13.0 of the mongodb PHP extension is now available on PECL. Thanks also to our intern for 1.13.0, Tanil Su, who added functionality for server discovery and monitoring!

## Release Highlights

`MongoDB\Driver\Manager::\_\_construct() `supports two new URI options: ` srvMaxHosts` and `srvServiceName`.

* `srvMaxHosts` may be used with sharded clusters to limit the number of hosts that will be added to a seed list following the initial SRV lookup.
* `srvServiceName` may be used with self-managed deployments to customize the default service name (i.e. “mongodb”).

This release introduces support for SDAM Monitoring, which applications can use to monitor internal driver behavior for server discovery and monitoring. Similar to the existing command monitoring API, applications can implement the `MongoDB\Driver\Monitoring\SDAMSubscriber ` interface and registering the subscriber globally or for a single Manager using `MongoDB\Driver\Monitoring\addSubscriber() ` or `MongoDB\Driver\Manager::addSubscriber`, respectively. In addition to many new event classes, this feature introduces the ServerDescription and TopologyDescription classes.

This release also upgrades our libbson and libmongoc dependencies to 1.21.1. The libmongocrypt dependency has been upgraded to 1.3.2.

Note that support for MongoDB 3.4 and earlier has been *removed.*

A complete list of resolved issues in this release may be found at: https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=12484&version=32494

## Documentation

Documentation is available on PHP.net:
http://php.net/set.mongodb

## Installation

You can either download and install the source manually, or you can install the extension with:

`pecl install mongodb-1.13.0`
or update with:

`pecl upgrade mongodb-1.13.0`

Windows binaries are available on PECL:
http://pecl.php.net/package/mongodb
# Using Rust Web Development Frameworks with MongoDB

##  Introduction
So, you've decided to write a Rust application with MongoDB, and you're wondering which of the top web development frameworks to use. Below, we give some suggestions and resources for how to:

1. Use MongoDB with Actix and Rust.
2. Use MongoDB with Rocket.rs and Rust.

The TLDR is that any of the popular Rust frameworks can be used with MongoDB, and we have code examples, tutorials, and other resources to guide you.

### Building MongoDB Rust apps with Actix

Actix is a powerful and performant web framework for building Rust applications, with a long list of supported features. 

You can find a working example of using MongoDB with Actix in the `databases` directory under Actix's github, but otherwise, if you're looking to build a REST API with Rust and MongoDB, using Actix along the way, this tutorial is one of the better ones we've seen.

### Building MongoDB Rust apps with Rocket.rs

Prefer Rocket? Rocket is a fast, secure, and type safe framework that is low on boilerplate. It's easy to use MongoDB with Rocket to build Rust applications. There's a tutorial on Medium we particularly like on building a REST API with Rust, MongoDB, and Rocket. 

If all you want is to see a code example on github, we recommend this one.
# Learn How to Leverage MongoDB Data within Kafka with New Tutorials!

The MongoDB Connector for Apache Kafka documentation now includes new tutorials! These tutorials introduce you to key concepts behind the connector and by the end, you’ll have an understanding of how to move data between MongoDB and Apache Kafka. The tutorials are as follows:

* Explore Change Streams

Change streams is a MongoDB server feature that provides change data capture (CDC) capabilities for MongoDB collections. The source connector relies on change streams to move data from MongoDB to a Kafka topic. In this tutorial, you will explore creating a change stream and reading change stream events all through a Python application.

* Getting Started with the MongoDB Kafka Source Connector

In this tutorial, you will configure a source connector to read data from a MongoDB collection into an Apache Kafka topic and examine the content of the event messages.

* Getting Started with the MongoDB Kafka Sink Connector

In this tutorial, you will configure a sink connector to copy data from a Kafka topic into a MongoDB cluster and then write a Python application to write data into the topic.

* Replicate Data with a Change Data Capture Handler

Configure both a MongoDB source and sink connector to replicate data between two collections using the MongoDB CDC handler.

* Migrate an Existing Collection to a Time Series Collection

Time series collections efficiently store sequences of measurements over a period of time, dramatically increasing the performance of time-based data. In this tutorial, you will configure both a source and sink connector to replicate the data from a collection into a time series collection.

These tutorials run locally within a Docker Compose environment that includes Apache Kafka, Kafka Connect, and MongoDB. Before starting them, follow and complete the Tutorial Setup.  You will work through the steps using a tutorial shell and containers available on Docker Hub.  The tutorial shell includes tools such as the new Mongo shell, KafkaCat, and helper scripts that make it easy to configure Kafka Connect from the command line.

If you have any questions or feedback on the tutorials, please post them on the MongoDB Community Forums.
# Blogue

## Creator
Sujan Chhetri contributed this project. 

## About the Project: 

Blogue is a writing platform where all the writers or non-writers are welcome. We believe in sharing knowlege in the form of words. The page has a 'newshub' for articles, a projecthub where you can share projects among other things. Posts can categorized by health, technology, business, science and more. It's also possible to select the source (CNN / Wired) etc. 

 ## Inspiration
 
I created this, so that I could share stuff (blogs / articles) on my own platform. I am a self taught programmer. I want other students to know that you can make stuffs happen if you make plans and start learning. 
 
 ## How it Works
  It's backend is written with Node.js and frontend with next.js and react.js. Mongodb Atlas is used as the storage.  MongoDB is smooth and fast. The GitHub repo shared above consists of the backend for a blogging platform. Most of the features that are in a blog are available.
  
  Some listed here: 

* User Signup / Signin
* JWT based Authentication System
* Role Based Authorization System-user/admin
* Blogs Search
* Related Blogs
* Categories
* Tags
* User Profile
* Blog Author Private Contact Form
* Multiple User Authorization System
* Social Login with Google
* Admin / User Dashboard privilage
* Image Uploads
* Load More Blogs
# GroupUs

## Creator
Anjay Goel contributed this project.

## About the Project
A web app that automates group formation for projects/presentations/assignments etc. It saves you the inconvenience of asking tens of people simply to form a group. Also letting an algorithm do the matching ensures that the groups formed are more optimal and fair.
 
 ## Inspiration
 Inspired by the difficulty and the unnecessary hassle in forming several different groups for different classes especially during the virtual classes.

## Why MongoDB?
Used MongoDB because the project required a database able to store and query JSON like documents.

## How It Works
The user creates a new request and adds participant names,email-ids, group size, deadline etc. Then the app will send a form to all participants asking them to fill out their preferences. Once all participants have filled their choices (or deadline reached), it will form groups using a algorithm and send emails informing everyone of their respective groups.
# Introducing a New MongoDB Aggregations Book

I'm pleased to announce the publication of my new book, **"Practical
MongoDB Aggregations."**

The book is available electronically for free for anyone to use at:
.

This book is intended for developers, architects, data analysts, data
engineers, and data scientists. It aims to improve your productivity and
effectiveness when building aggregation pipelines and help you
understand how to optimise their pipelines.

The book is split into two key parts:

1.  A set of tips and principles to help you get the most out of
    aggregations.
2.  A bunch of example aggregation pipelines for solving common data
    manipulation challenges, which you can easily copy and try for
    yourself.

>
>
>If you have questions, please head to our developer community
>website where the MongoDB engineers and
>the MongoDB community will help you build your next big idea with
>MongoDB.
>
>
# Cinema: Example Go Microservices Application

Looking for a code example that has microservices in Go with Docker, Kubernetes and MongoDB? Look no further!

Cinema is an example project which demonstrates the use of microservices for a fictional movie theater. The Cinema backend is powered by 4 microservices, all of which happen to be written in Go, using MongoDB for manage the database and Docker to isolate and deploy the ecosystem.

Movie Service: Provides information like movie ratings, title, etc.
Show Times Service: Provides show times information.
Booking Service: Provides booking information.
Users Service: Provides movie suggestions for users by communicating with other services.

This project is available to clone or fork on github from Manuel Morejón.
# The 2022 MongoDB Java Developer Survey

According to the 2022 Stack Overflow Developer Survey, Java is the sixth most popular programming, scripting, or markup language. 17K of the whopping 53K+ respondents indicated that they use Java - that’s a huge footprint!

Today we have more than 132,000 clusters running on Atlas using Java. 

We’re running our first-ever developer survey specifically for Java developers. We’ll use your survey responses to make changes that matter to you. The survey will take approximately 5-10 minutes to complete. As a way of saying thank you, we’ll be raffling off gift cards (five randomly chosen winners will receive $150).

You can access the survey here.
# Magazine Management

## Creator
Trinh Van Thuan from Vietnam National University contributed this project.

## About the Project

The system manages students' posts in universities.
The system allows students and clients to read posts in diverse categories, such as: math, science, social, etc.
 
 ## Inspiration
 
 Creating an environment for students to communicate and gain knowledge

## Why MongoDB?
Since MongoDB provides more flexible way to use functions than MySQL or some other query languages
 
 ## How It Works
 There are 5 roles: admin, manager, coordinator, student, clients.

* Admins are in charge of managing accounts.
* Managers manage coordinators.
* Coordinators manage students' posts.
* Students can read their faculty's posts that have been approved.
* Clients can read all posts that have been approved.
# Simple CRUD operations with Python and MongoDB

For the absolute beginner, there's nothing more simple than a CRUD tutorial. Create, Read, Update, and Delete documents using this mongodb tutorial for Python.  

## Introduction
To get started, first you'll need to understand that we use pymongo, our python driver, to connect your application to MongoDB. Once you've installed the driver, we'll build a simple CRUD (Create, Read, Update, Delete) application using FastAPI and MongoDB Atlas. The application will be able to create, read, update, and delete documents in a MongoDB database, exposing the functionality through a REST API. 

You can find the finished application on Github here.

## About the App You'll Build
This is a very basic example code for managing books using a REST API. The REST API has five endpoints:

`GET /book`: to list all books
`GET /book/`: to get a book by its ID
`POST /book`: to create a new book
`PUT /book/`: to update a book by its ID
`DELETE /book/`: to delete a book by its ID

To build the API, we'll use the FastAPI framework. It's a lightweight, modern, and easy-to-use framework for building APIs. It also generates Swagger API documentation that we'll put to use when testing the application.

We'll be storing the books in a MongoDB Atlas cluster. MongoDB Atlas is MongoDB's database-as-a-service platform. It's cloud-based and you can create a free account and cluster in minutes, without installing anything on your machine. We'll use PyMongo to connect to the cluster and query data.

This application uses Python 3.6.