Corona exposes a REST interface for storing, searching and transforming XML, JSON, text and binary documents.
Inside each of the REST endpoints exists a number of other powerful features. For example, the entire structure of the documents can be queried with either key/value lookups, a search box query string, or a powerful structured query language. When retrieving documents, a path may be provided to extract out specific sections and XSLT/XQuery transformations can be applied to the content.
Specific to JSON content, dates in dozens of formats can be parsed and stored as actual dates. If the value of a key is a string of XML, that XML can be unquoted, stored and queried as actual XML.
On top of this, you get the built in scalability, speed and database features that MarkLogic Server provides. Need geospatial support? It's included. Clustering? Yep, that's there too. Multiple languages? Of course! Powerful fulltext search? Nobody does it better.
NB: Corona is a community-sponsored project under limited development. The endpoint APIs are still solidifying and are subject to change. This wiki documentation tracks the head revision of the master branch, which is what we suggest you do as well. We develop with automated tests, and we don't check in code until it passes all tests. Milestone bundles, for posterity, are available under the "Code" tab in the "Tags" area. You can "Watch" the project by clicking the button up above to have GitHub keep you informed of our progress. If you are running MarkLogic 6 or later, please consider using the official MarkLogic REST API.
Documents are stored and indexed in the server. Each document has a unique uri where it is stored at. It can also be organized into multiple collections (think of them as having tags) and is automatically placed into a directory based off of its uri. Documents can also have external metadata called properties. To control access to the content, a sophisticated permissions system is available.
By default a request to insert, update or delete a document executes in a single transaction. This means that a new transaction is created for each one of these requests. However, if multiple requests need to be grouped together and committed (or rolled back) at the same time, Corona supports this via the transaction endpoints.
Queries can be run over JSON or XML data, but not both in the same query.
These endpoints provide control over how Corona searches the content in the database. You can use them to enable various features in the string queries as well as structured queries.