1 / 4

Intro

Intro. REST service using MongoDB as backend Two basic operations (to simplify) Update attributes in entities (e.g. update the “speed” attribute in the “Car1” entity)

lars-barton
Download Presentation

Intro

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Intro • REST service using MongoDB as backend • Two basic operations (to simplify) • Update attributes in entities (e.g. update the “speed” attribute in the “Car1” entity) • Subscribe to changes in a given attribute on a given entity, so when an update of it occurs, then a notification to a given URL is sent REST sesrvice MongoDB

  2. Update “Update the Car1 speed to 80 km/h” REST sesrvice Entities are stored in the ‘entities’ collection: { "_id": "Car1", "attrs": [ { "name": "speed", "value": "80" } ] } MongoDB

  3. Subscription “I want to receive a notification on http://notify.me each time any Car speed changes” REST sesrvice MongoDB Subscriptions are stored in the ‘csubs’ collection: { "_id": ObjectId("5149fd46f0075f83a4ca0300"), "reference": "http://notify.me", "entity": "Car.*", "attr": "speed" }

  4. Update triggering subscription (“the problem”) “Update the Car1 speed to 85 km/h” In order to know which subscriptions are triggered by this update, a query on the “csubs” collection has to be done using “Car1” for the lookup. However, we have the regular expression stored in csubs (regex is not in the query!) Currently we use {$where: “\"Car1\".match(this.entity)" }, which is not recommended by MongoDB documentation. Reverse regex will solve this problem in a smart way: {entity: {$regexApply: {“Car1”}}} REST sesrvice MongoDB (See https://jira.mongodb.org/browse/SERVER-13902 for more details on $regexApply)

More Related