CouchDB Day NYC 2017: Mango

34
Lab: Mango (30 minutes) Bradley Holt, Developer Advocate Thursday, February 9, 2017 CouchDB Developer Day @BradleyHolt

Transcript of CouchDB Day NYC 2017: Mango

Page 1: CouchDB Day NYC 2017: Mango

Lab: Mango (30 minutes)

Bradley Holt, Developer AdvocateThursday, February 9, 2017

CouchDB Developer Day

@BradleyHolt

Page 2: CouchDB Day NYC 2017: Mango

Prerequisite: Replication Lab

@BradleyHolt

Page 3: CouchDB Day NYC 2017: Mango
Page 4: CouchDB Day NYC 2017: Mango

Mango

Declarative indexes MongoDB-style query language You can still use map/reduce views

@BradleyHolt

Page 6: CouchDB Day NYC 2017: Mango

http-console

$ npm install http-console -g$ http-console 127.0.0.1:5984

@BradleyHolthttps://github.com/cloudhead/http-console

Page 7: CouchDB Day NYC 2017: Mango

http-console

$ npm install http-console -g$ http-console 127.0.0.1:5984> http-console 0.6.3> Welcome, enter .help if you're lost.> Connecting to 127.0.0.1 on port 5984.

@BradleyHolthttps://github.com/cloudhead/http-console

Page 8: CouchDB Day NYC 2017: Mango

Connecting to CouchDB 2.0

$ http-console root:[email protected]:5984 --json

@BradleyHolt

Page 9: CouchDB Day NYC 2017: Mango

Connecting to CouchDB 2.0

$ http-console root:[email protected]:5984 --json> http-console 0.6.3> Welcome, enter .help if you're lost.> Connecting to 127.0.0.1 on port 5984.

@BradleyHolt

Page 10: CouchDB Day NYC 2017: Mango

Connecting to IBM Cloudant

$ http-console https://bradley-holt:[email protected] --json

@BradleyHolt

Page 11: CouchDB Day NYC 2017: Mango

Connecting to IBM Cloudant

$ http-console https://bradley-holt:[email protected] --json> http-console 0.6.3> Welcome, enter .help if you're lost.> Connecting to bradley-holt.cloudant.com on port 443.

@BradleyHolt

Page 12: CouchDB Day NYC 2017: Mango

Mango

/>

@BradleyHolt

Page 13: CouchDB Day NYC 2017: Mango

Mango

/> /kittens

@BradleyHolt

Page 14: CouchDB Day NYC 2017: Mango

Mango

/kittens>

@BradleyHolt

Page 15: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_index

@BradleyHolt

Page 16: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_index...

@BradleyHolt

Page 17: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_index... { "index": { "fields": [ "age_weeks", "weight_kilograms" ] } }

@BradleyHolt

Page 18: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_index... { "index": { "fields": [ "age_weeks", "weight_kilograms" ] } }HTTP/1.1 200 OKContent-Type: application/json

{ result: 'created', id: '_design/e19dde7f518129a966ebe072edc66be88d54e694', name: 'e19dde7f518129a966ebe072edc66be88d54e694'}

@BradleyHolt

Page 19: CouchDB Day NYC 2017: Mango

@BradleyHolt

Page 20: CouchDB Day NYC 2017: Mango

Mango

/kittens>

@BradleyHolt

Page 21: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_find

@BradleyHolt

Page 22: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_find...

@BradleyHolt

Page 23: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_find... { "selector": { "age_weeks": { "$gte": 7, "$lte": 10 } }, "fields": [ "_id", "age_weeks" ] }

@BradleyHolt

Page 24: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_find... { "selector": { "age_weeks": { "$gte": 7, "$lte": 10 } }, "fields": [ "_id", "age_weeks" ] }HTTP/1.1 200 OKContent-Type: application/json

{ docs: [ { _id: 'tiger', age_weeks: 7 }, { _id: 'daisy', age_weeks: 9 }, { _id: 'mittens', age_weeks: 10 } ]}

@BradleyHolt

Page 25: CouchDB Day NYC 2017: Mango

@BradleyHolt

Page 26: CouchDB Day NYC 2017: Mango

Mango

/kittens>

@BradleyHolt

Page 27: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_find

@BradleyHolt

Page 28: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_find...

@BradleyHolt

Page 29: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_find... { "selector": { "age_weeks": { "$gte": 0 }, "weight_kilograms": { "$gte": 0.5, "$lte": 1 } }, "fields": [ "_id", "weight_kilograms" ] }

@BradleyHolt

Page 30: CouchDB Day NYC 2017: Mango

Mango

/kittens> POST /_find... { "selector": { "age_weeks": { "$gte": 0 }, "weight_kilograms": { "$gte": 0.5, "$lte": 1 } }, "fields": [ "_id", "weight_kilograms" ] }HTTP/1.1 200 OKContent-Type: application/json

{ docs: [ { _id: 'tiger', weight_kilograms: 0.726 }, { _id: 'daisy', weight_kilograms: 0.816 }, { _id: 'mittens', weight_kilograms: 0.997 } ]}

@BradleyHolt

Page 31: CouchDB Day NYC 2017: Mango

@BradleyHolt

Page 32: CouchDB Day NYC 2017: Mango

Try It On Your Own

1. Create an index of kittens by weight_kilograms and age_weeks (in that order)

2. Find kittens weighing less than 1 kilogram who are 7 weeks or older

@BradleyHolt

Page 33: CouchDB Day NYC 2017: Mango

Image Credit

Mango with section on a white background by bangdoll, on Flickr <https://flic.kr/p/9CBP2h>

@BradleyHolt

Page 34: CouchDB Day NYC 2017: Mango

Lab: MangoCouchDB Developer Day

@BradleyHolt