# @andriyf/odata-v4-mongodb

> Service OData requests from a MongoDB data store

Latest version **0.1.10** (published 2017-05-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install @andriyf/odata-v4-mongodb
pnpm add @andriyf/odata-v4-mongodb
yarn add @andriyf/odata-v4-mongodb
bun add @andriyf/odata-v4-mongodb
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.10 |
| Published | 2017-05-03 |
| First published | 2017-05-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 31 |
| Author | JayStack |
| Maintainers | andriyf |
| Keywords | OData, server, V4, parser |

## Links

- npm: https://www.npmjs.com/package/@andriyf/odata-v4-mongodb
- Repository: https://github.com/jaystack/odata-v4-mongodb
- Homepage: https://github.com/jaystack/odata-v4-mongodb#readme
- Issues: https://github.com/jaystack/odata-v4-mongodb/issues
- npm.io page: https://npm.io/package/@andriyf/odata-v4-mongodb

## Dependencies (2)

- [odata-v4-parser](https://npm.io/package/odata-v4-parser.md) ^0.1.18
- [odata-v4-literal](https://npm.io/package/odata-v4-literal.md) ^0.1.0

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 0.1.10 (latest) — 2017-05-03

## README

# OData V4 Service modules - MongoDB Connector

Service OData v4 requests from a MongoDB data store.

## Synopsis
The OData V4 MongoDB Connector provides functionality to convert the various types of OData segments
into MongoDB query objects, that you can execute over a MongoDB database.

## Potential usage scenarios

- Create high speed, standard compliant data sharing APIs

## Usage as server - TypeScript
```javascript
import { createFilter } from 'odata-v4-mongodb'

//example request:  GET /api/products?$filter=category/id eq 5 or color eq 'Red'
app.get("/api/products", (req: Request, res: Response) => {
    const filter = createFilter(req.query.$filter);
    // collection instance from MongoDB Node.JS Driver
    collection.find(filter, function(err, data){
        res.json({
        	'@odata.context': req.protocol + '://' + req.get('host') + '/api/$metadata#products',
        	value: data
        });
    });
});
```

## Usage ES5
```javascript
var createFilter = require('odata-v4-mongodb').createFilter;

app.get("/api/products", function(req, res) {
    var filter = createFilter(req.query.$filter);
    // collection instance from MongoDB Node.JS Driver
    collection.find(filter, function(err, data){
        res.json({
        	'@odata.context': req.protocol + '://' + req.get('host') + '/api/$metadata#products',
        	value: data
        });
    });
})
```

## Supported OData segments

For now **$filter**, **$select**, **$skip** and **$top**

Support for **$expand** is next.

### Supported $filter expressions

The [OData v4 Parser](https://www.npmjs.com/package/odata-v4-parser) layer supports 100% of the specification.
The Connector is supporting basic MongoDB queries.

*We are into creating a comprehensive feature availability chart for V1 release*

    √ expression 5.1.1.6.1: NullValue eq null
    √ expression 5.1.1.6.1: TrueValue eq true
    √ expression 5.1.1.6.1: FalseValue eq false
    √ expression 5.1.1.6.1: IntegerValue lt -128
    √ expression 5.1.1.6.1: DecimalValue eq 34.95
    √ expression 5.1.1.6.1: StringValue eq 'Say Hello,then go'
    √ expression 5.1.1.6.1: DurationValue eq duration'P12DT23H59M59.999999999999S'
    √ expression 5.1.1.6.1: DateValue eq 2012-12-03
    √ expression 5.1.1.6.1: DateTimeOffsetValue eq 2012-12-03T07:16:23Z
    √ expression 5.1.1.6.1: GuidValue eq 01234567-89ab-cdef-0123-456789abcdef
    √ expression 5.1.1.6.1: Int64Value eq 0
    √ expression 5.1.1.6.1: A eq INF
    √ expression 5.1.1.6.1: A eq 0.31415926535897931e1
    √ expression 5.1.1.1.2: A ne 1
    √ expression 5.1.1.1.3: A gt 2
    √ expression 5.1.1.1.4: A ge 3
    √ expression 5.1.1.1.5: A lt 2
    √ expression 5.1.1.1.6: A le 2
    √ expression: A/b eq 1
    √ expression 5.1.1.3: (A/b eq 2) or (B/c lt 4) and ((E gt 5) or (E lt -1))

---
_Source: https://npm.io/package/@andriyf/odata-v4-mongodb · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
