Hello! 👋 This application allows you to search lightning fast through over 25,000 restaurants in the New York city area based on a variety of search parameters and data types:
- restaurant name
- geolocation coordinates
- cuisine type
- average star rating
- borough
Note: This dataset is mocked. Please do not use to make actual dining decisions.
What's Cooking implements many Atlas Search features from autocomplete to custom function scoring. Using the $search operator in a MongoDB aggregation pipeline, we can build fine-grained searches across text, numerics, and geospatial data. By building out What's Cooking, you'll learn all sorts of ways MongoDB allows you to build complex, fine-grained full-text searches on your Atlas data.
No additional servers or software needed. No need to keep data in sync. Everything is done in MongoDB Atlas.
- fuzzy matching
- highlighting
- autocomplete
- range queries
- geoqueries
- facets
- relevance-based scoring
- custom function scoring
- synonyms
Check out the video of the MongoDB .Live keynote to see a demonstration of all the features or visit the link below to play around with the finished application, hosted entirely in MongoDB Atlas:
This application is hosted entirely by MongoDB Atlas was created using:
- React
- Tailwind CSS
- MongoDB Realm for backend HTTPs endpoints and webhooks
- A modified sample dataset based on MongoDB's Atlas sample_restaurants dataset
Currently this app is not suitable for mobile, but feel free to send a PR. 😊
- A MongoDB Atlas account. Get one for free here.
- A recent version of Node.js and npm.
- Restaurant sample dataset.
- Synonyms dataset.
- (Recommended) MongoDB Compass - GUI
You can read and download the dataset using the MongoDB Shell, any MongoDB driver, or my favorite MongoDB Compass using the following URI:
mongodb+srv://mongodb:[email protected]/whatscooking
It is also included in this repo's Supplemental Files branch as
whatscooking.json
- Clone the repo.
- Navigate inside
WhatsCooking
directory. - Run
npm install
. - Run
npm start
.
- Load data to Atlas cluster:
- database:
whatscooking
- collection:
restaurants
- database:
- Create Search indexes. (Index definitions includes in `supplement-files` .)
What's Cooking uses HTTP services in Realm to create 5 APIs to allow you to query for your restaurant data over HTTP:
GetRestaurantsEndPoint
called from theuseHomeFetch.js
hook.GetFacetsEndpoint
called from theuseHomeFetch.js
hook.Suggestions_AC_Endpoint
called from theSearchBar.js
component.getSynonyms
called in theSynonymsPage.js
.
Find the Realm application and code for these webhooks in the
WhatsCookingRealm
folder.