Research MongoDB
License and Copyright Notice
By submitting this issue or commenting on this issue, or contributing any content to this issue, you certify under the Developer Certificate of Origin that the content you post may be licensed under GPLv3 (for code) or CC-BY-SA 4.0 International (for non-code content).
What is the goal or the problem, and why is it important?
ViewOrder's BackEnd will require research into MongoDB, and potentially Springboot as tools to set-up the framework. The issue here is that currently there is no ground-work for the backend's database due to ViewOrder being a newly created project.
- MongoDB will function as a database for ViewOrder
How are you going to achieve the goal or solve the problem?
Research will need to be gathered, compiled and summarized on the backend of PlaceOrder, specifically on any work done using MongoDB, due to ViewOrder having to have some interaction with the code found in PlaceOrder's backend in addition to online resources such as Youtube videos, tutorial websites, articles and free online courses. These resources will be helpful in providing reliable information on how to create and format the database for the backend of ViewOrder. Discussion with the team working on PlaceOrder will need to take place in order to maintain consistency and ensure future communication to facilitate interaction with ViewOrder and PlaceOrder.
What will be produced as a result of this effort and where will it live on GitLab?
- A list of helpful URLs regarding the creation and use of MongoDB file(s)
- A brief summary describing how MongoDB will work within ViewOrder
Give a justification of weight or due date.
This issue is given a weight of 4, which is equivalent to a 1-person week. It will take some time to gather, compile and summarize the research, along with this issue potentially overlapping into future issues regarding the set-up of MongoDB.
Who will do it, and what will they do?
@DT127 will be assigned to document the research and begin tentatively setting up the MongoDB framework.
What was the outcome?
Helpful resources on MongoDB:
- What is MongoDB?
- URL: https://intellipaat.com/blog/what-is-mongodb/#_MongoDb
- MongoDB is a general purpose, document-based, distributed database that stores data in JSON-like documents that is flexible, highly scalable and is considered a distributed NoSQL database.
- The main features offered by MongoDB are queries, indexing, replication, multiple servers, load balancing, file storage (GridFS), aggregation, and server-side JavaScript execution.
- MongoDB follows a highly elastic data model that allows for the capability to combine and store data of multivariate types without having to compromise on indexing options, data access and validation guidelines.
- The architecture of MongoDB consists of databases, collections, and documents.
- Simplified, a database is a physical container for the data. Each database has its own set of files with multiple databases potentially existing on a single MongoDB server.
- A collection is a group of database documents and exists in its entirety within a single database. Within the collection various documents can have different fields, however it is typical that documents within a collection have the same purpose or exist to serve the same end-goal. There are no schemas in regards to collections.
- A document is a set of key-value pairs. Documents are associated with dynamic schemas which give documents flexibility as it does not restrict the document to possessing the same structure of fields as other documents.
- MongoDB makes it easy to fetch data and provide continuous integration.
- MongoDB Basics
- URL: https://www.mongodb.com/basics
- This page simplifies the concepts of databases, documents, collections, highlights some features and provides a link to a list of supported languages supported by MongoDB.
- MongoDB’s website
- URL: https://www.mongodb.com/
- This link will take you to the main website of MongoDB where you can learn more about MongoDB’s software, pricing and documentation.
- Download MongoDB
- URL: https://www.mongodb.com/try/download
- This link will direct you to a download page for various types of MongoDB. At this site you can obtain more information about MongoDB as a cloud service, download the MongoDB Enterprise Server, Community Server, Ops Manager version, Enterprise/Community Kubernetes Operation version, or download specific MongoDB tools that suit your needs. MongoDB for mobile is also available.
- Install MongoDB
- URL: https://docs.mongodb.com/guides/server/install/
- This page provides a guide on how to install MongoDB on Windows, macOS and Linux systems, including how to set-up the MongoDB environment, start MongoDB, verify successful start-up, and how to connect to MongoDB.
- Please note that MongoDB supports 64-bit platforms and no longer supports 32-bit x86 platforms. To see more information on what platforms MongoDB supports, please see the sub-bullet point below:
- Data Structuring Guide
- URL: https://docs.mongodb.com/guides/server/introduction/
- This page offers a short guide on how to structure your data in MongoDB using a JSON document. Some examples are included.
- Connecting to MongoDB
- URL: https://docs.mongodb.com/guides/server/drivers/
- This page offers a quick guide on how to connect to MongoDB.
- Please note that by default this page will display information for connecting to a local instance of MongoDB using a Mongo Shell client. You can change the type to cloud if you are working with MongoDB Atlas by clicking the “CLOUD” tag under “Deployment Type: local”. You can also change the client type by clicking on any of the tags, such as “MONGO SHELL”, “COMPASS”, “PYTHON”, etc., underneath the “Client: shell” line.
- Inserting Data in MongoDB
- URL: https://docs.mongodb.com/guides/server/insert/
- This guide will cover the basic steps on how to insert data via a document in MongoDB.
- Please note by default this page will display information for inserting data in a local instance of MongoDB using a Mongo Shell client. You can change the type to cloud if you are working with MongoDB Atlas by clicking the “CLOUD” tag under “Deployment Type: local”. You can also change the client type by clicking on any of the tags, such as “MONGO SHELL”, “COMPASS”, “PYTHON”, etc., underneath the “Client: shell” line.
- Importing Data Guide
- URL: https://docs.mongodb.com/guides/server/import/
- This page provides a quick guide on importing data into a MongoDB instance. By default this page will display information for importing data locally, however you can switch to importing data for cloud by clicking on the “CLOUD” tag located right under “Deployment Type: local”.
- Please note that you will need to have a MongoDB instance to connect prior to importing data if you plan to use a local instance of MongoDB. If you are using MongoDB Atlas (running in the Cloud) then you will need an Atlas account and cluster, and to set up connectivity to Atlas.
- Retrieving Data from MongoDB
- URL: https://docs.mongodb.com/guides/server/read/
- This page provides a short procedure on how to read data from MongoDB.
- Please note by default this page will display information for inserting data in a local instance of MongoDB using a Mongo Shell client. You can change the type to cloud if you are working with MongoDB Atlas by clicking the “CLOUD” tag under “Deployment Type: local”. You can also change the client type by clicking on any of the tags, such as “MONGO SHELL”, “COMPASS”, “PYTHON”, etc., underneath the “Client: shell” line.
- Updating Data
- URL: https://docs.mongodb.com/guides/server/update/
- This page describes the steps on how to update documents in a MongoDB database.
- Please note by default this page will display information for inserting data in a local instance of MongoDB using a Mongo Shell client. You can change the type to cloud if you are working with MongoDB Atlas by clicking the “CLOUD” tag under “Deployment Type: local”. You can also change the client type by clicking on any of the tags, such as “MONGO SHELL”, “COMPASS”, “PYTHON”, etc., underneath the “Client: shell” line.
- Deleting Data
- URL: https://docs.mongodb.com/guides/server/delete/
- This page describes how to delete documents from a MongoDB database
- Other MongoDB Guides
- URL: https://docs.mongodb.com/guides/
- This page hosts a multiple of guides not specified in this issue ticket. These guides include securing your MongoDB deployment, migrating to MongoDB Atlas, reading data from MongoDB with queries, reading data using operators and compound queries, and more.
- Tutorialspoint resource
- URL: https://www.tutorialspoint.com/mongodb/index.htm
- This website provides information on the advantages of MongoDB, environments, data modeling, creation of databases/collections, documents, indexing, aggregating, indexing, queries and much more.
- MongoDB Crash Course
- URL: https://www.youtube.com/watch?v=-56x56UppqQ&t=1246s
- This 36-minute tutorial offers instruction on the many functions and features of MongoDB such as inserting, finding, filtering, updating, searching, and more.
- MongoDB Commands
- Database Commands
- URL: https://docs.mongodb.com/manual/reference/command/
- This page contains documentation on user commands, database operations and auditing commands.
- Administration Commands
- Query and Write Operation Commands
- Database Commands
- Simply put, MongoDB will serve as ViewOrder's database where information pertaining to the items contained within an order will be stored. There will be some interaction required between the OrderAPI and OrderDatabase which may also necessitate communication with PlaceOrder as both aspects of the BNM ordering system will need to pull data from the OrderDatabase.