Post on 03-Mar-2017
Lab: Mango (30 minutes)
Bradley Holt, Developer AdvocateThursday, February 9, 2017
CouchDB Developer Day
@BradleyHolt
Prerequisite: Replication Lab
@BradleyHolt
Mango
Declarative indexes MongoDB-style query language You can still use map/reduce views
@BradleyHolt
http-console
$ npm install http-console -g
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
$ npm install http-console -g$ http-console 127.0.0.1:5984
@BradleyHolthttps://github.com/cloudhead/http-console
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
Connecting to CouchDB 2.0
$ http-console root:passw0rd@127.0.0.1:5984 --json
@BradleyHolt
Connecting to CouchDB 2.0
$ http-console root:passw0rd@127.0.0.1:5984 --json> http-console 0.6.3> Welcome, enter .help if you're lost.> Connecting to 127.0.0.1 on port 5984.
@BradleyHolt
Connecting to IBM Cloudant
$ http-console https://bradley-holt:passw0rd@bradley-holt.cloudant.com --json
@BradleyHolt
Connecting to IBM Cloudant
$ http-console https://bradley-holt:passw0rd@bradley-holt.cloudant.com --json> http-console 0.6.3> Welcome, enter .help if you're lost.> Connecting to bradley-holt.cloudant.com on port 443.
@BradleyHolt
Mango
/>
@BradleyHolt
Mango
/> /kittens
@BradleyHolt
Mango
/kittens>
@BradleyHolt
Mango
/kittens> POST /_index
@BradleyHolt
Mango
/kittens> POST /_index...
@BradleyHolt
Mango
/kittens> POST /_index... { "index": { "fields": [ "age_weeks", "weight_kilograms" ] } }
@BradleyHolt
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
@BradleyHolt
Mango
/kittens>
@BradleyHolt
Mango
/kittens> POST /_find
@BradleyHolt
Mango
/kittens> POST /_find...
@BradleyHolt
Mango
/kittens> POST /_find... { "selector": { "age_weeks": { "$gte": 7, "$lte": 10 } }, "fields": [ "_id", "age_weeks" ] }
@BradleyHolt
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
@BradleyHolt
Mango
/kittens>
@BradleyHolt
Mango
/kittens> POST /_find
@BradleyHolt
Mango
/kittens> POST /_find...
@BradleyHolt
Mango
/kittens> POST /_find... { "selector": { "age_weeks": { "$gte": 0 }, "weight_kilograms": { "$gte": 0.5, "$lte": 1 } }, "fields": [ "_id", "weight_kilograms" ] }
@BradleyHolt
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
@BradleyHolt
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
Image Credit
Mango with section on a white background by bangdoll, on Flickr <https://flic.kr/p/9CBP2h>
@BradleyHolt
Lab: MangoCouchDB Developer Day
@BradleyHolt