Actions

MAPREDUCE Elite

From NoSQLZoo

Revision as of 15:40, 23 July 2015 by 40166222 (talk | contribs)
#ENCODING
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-16')
#MONGO
from pymongo import MongoClient
client = MongoClient()
client.elite.authenticate('scott','tiger')
db = client['elite']
#PRETTY
import pprint
pp = pprint.PrettyPrinter(indent=4)

Introducing the elite database **WORK IN PROGRESS

These questions will introduce the "elite" database, which contains data about the video game Elite Dangerous

There are two collections, commodities and systems. Inside systems there is are nested documents called stations
A system has many stations, and a station has many trade listings

Read more about the structure here: Elite Document Structure

Questions

The commodities collection contains the name and average price of each commodity.

There are 99 commodities and 15 categories.

Find the average price of each category, round to the nearest whole number

from bson.code import Code
pp.pprint(
    db.commodities.find_one()
)







from bson.code import Code;temp = db.commodities.map_reduce( map=Code("function(){emit(this.category,this.average_price)}"), reduce=Code("""function(key,values){var total = 0;for (var i = 0; i < values.length; i++){total += values[i];}return Math.round(total/values.length);} """),out={"inline":1} );pp.pprint(temp['results'])













from bson.code import Code; temp = db.systems.map_reduce( query={"allegiance":{"$exists": 1}}, map=Code("function(){emit(this.allegiance,this.faction)}"), reduce=Code("""function(key,values){return values.length}"""), out={"inline":1} );pp.pprint( temp['results'] )

  • You have been served by: dill