Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does MongoDB have a native REST interface?

I am currently evaluating Mongo and CouchDB for storing data points (analytics).

During my earlier interaction with CouchDB, I loved its JSONP based interface. I could perform all CRUD operations from purely JavaScript. Just run CouchDB and write some JavaScript - no server side component needed.

When comparing this to Mongo, is there any REST interface available? Is it possible to do CRUD purely from javascript in Mongo?

Thanks!

like image 335
Mayank Jain Avatar asked Sep 12 '11 10:09

Mayank Jain


People also ask

Does MongoDB have a REST API?

Atlas Data API is a fully managed REST-like API, to allow you to access your MongoDB Atlas data, and perform CRUD operations and aggregations with ease. Once enabled on a cluster, you can achieve all the CRUD operations out of the box via a URL, with just an API key.

Does MongoDB have a web interface?

MongoDB web interface is a tool used to administrate our database server via the web browser, there are multiple web interface tools available in MongoDB. There is multiple features of the web interface in MongoDB like we can create database and collection by using the web interface.

What is MongoDB query API?

The MongoDB Query API is the mechanism that you use to interact with your data. The Query API comprises two ways to query data in MongoDB: CRUD Operations. Aggregation pipelines.

Can I use GraphQL with MongoDB?

The GraphQL API lets you access data that you have stored in a MongoDB Atlas cluster or Federated database instance. To get started, create a free cluster and link it to your App. If you don't have any data yet but you still want to explore the GraphQL API, consider adding a sample data set to your cluster.


2 Answers

There is no full-blown REST interface to MongoDB, mainly because the server uses native binary protocol for efficiency. You can find few REST wrappers in official documentation (edit: MongoDB inc has now deleted this information):

  • RESTHeart (Java 8) is a the data REST API server part of the MongoDB ecosystem. RESTHeart uses a standard representation format based on HAL with full native mongodb data support via the strict mode representation of BSON. It provides API for CRUD and data model operations, built-in authentication and authorization and it supports CORS. It is easy to setup and a docker container is available. RESTHeart is also fast and lightweight (~7 Mb footprint and ~200 Mb RAM peek usage).
  • Sleepy Mongoose (Python) is a full featured REST interface for MongoDB which is available as a separate project.
  • Rest on Mongo for node.js. The older MongoDB Rest is no longer maintained.
  • Simple REST Interface The mongod process includes a simple read-only REST interface for convenience. For full REST capabilities we recommend using an external tool such as Sleepy.Mongoose.
like image 164
Tomasz Nurkiewicz Avatar answered Sep 21 '22 15:09

Tomasz Nurkiewicz


The MongoDB Atlas Data API in Preview was also released in November 2021 to use with a hosted MongoDB instance through the company's Atlas offering. It lets you send complex queries and aggregations to MongoDB over a standard HTTPS interface, though it isn't currently recommended for direct client-side access.

For instance, once a cluster is created and the Data API is enabled for it, the following request can be used to insert a document -

  curl --request POST \   'https://data.mongodb-api.com/app/<Unique ID>/endpoint/data/beta/action/insertOne' \   --header 'Content-Type: application/json' \   --header 'Access-Control-Request-Headers: *' \   --header 'api-key: <Data API Key>' \   --data-raw '{       "dataSource": "Cluster0",       "database": "todo",       "collection": "tasks",       "document": {         "status": "open",         "text": "Do the dishes"       }   }' 

and the following to do an aggregation -

curl --location --request POST 'https://data.mongodb-api.com/app/<Unique ID>/endpoint/v1/beta/action/aggregate' \ --header 'Content-Type: application/json' \ --header 'Access-Control-Request-Headers: *' \ --header 'api-key:<Data API Key>' \ --data-raw '{     "collection":"movies",     "database":"sample_mflix",     "dataSource": "Cluster0",     "pipeline": [   {     "$search": {       "index": "default",       "text": {         "query": "Brad Pitt",         "path": {           "wilcard": "*"         }       }     }   } ] } 

Both the API and Atlas offer free tiers and only take a few minutes to spin up.

Full disclosure - I work for MongoDB, Inc.

like image 42
sumedhamehta Avatar answered Sep 24 '22 15:09

sumedhamehta