|
|
Line 16: |
Line 16: |
| These questions will introduce the "elite" database, which contains data about the video game [https://www.elitedangerous.com/ Elite Dangerous]<br/><br/> | | These questions will introduce the "elite" database, which contains data about the video game [https://www.elitedangerous.com/ Elite Dangerous]<br/><br/> |
| There are two collections, <code>commodities</code> and <code>systems</code>. Inside <code>systems</code> there is are nested documents called <code>stations</code><br/> | | There are two collections, <code>commodities</code> and <code>systems</code>. Inside <code>systems</code> there is are nested documents called <code>stations</code><br/> |
− | A <b>system</b> has many <b>stations</b>, and a <b>station</b> imports,exports, and bans many <b>commodities</b> | + | A <b>system</b> has many <b>stations</b>, and a <b>station</b> has many trade <code>listings</code><br/><br/> |
| + | Read more about the structure here: [[Elite_Document_Structure]] |
| <br/><br/> | | <br/><br/> |
− | ==Document Structure== | + | ==Questions== |
− | Unlike the previous examples, here we'll be using nested documents. A nested document is simply a document that contains other documents, for example:
| |
− | <pre>
| |
− | [{"name":"Jim",
| |
− | "role":"Dad",
| |
− | "age": 42,
| |
− | "children":[{"name":"Bob", "age":2},
| |
− | {"name":"Alice", "age":3}
| |
− | ]
| |
− | }]
| |
− | </pre>
| |
− | Another change from the previous example is that <code>null</code> and empty values are no longer stored.<br/>
| |
− | This means that some documents will have fields that others do not. Some systems will be uninhabited and have no stations. Some stations will have no listings.<br/>
| |
− | To query null <b>or</b> non-existant fields we use <code><field>: null</code><br/><br/>
| |
− | The average <code>commodities</code> document looks something like this.
| |
− | <pre>
| |
− | {
| |
− | "_id" : ObjectId("55af74e7402aa43f1ce7e3a3"),
| |
− | "name" : "Explosives",
| |
− | "average_price" : 267,
| |
− | "category" : "Chemicals"
| |
− | }
| |
− | </pre>
| |
− | <code>systems</code> is much bigger, so some stations and listings have been removed from this example<div class=hint title="click here to show it.">
| |
− | <pre>
| |
− | > db.systems.findOne({"name":"1 Kappa Cygni"})
| |
− | {
| |
− | "_id" : ObjectId("55b0e227369fd571eca8764c"),
| |
− | "stations" : [
| |
− | {
| |
− | "max_landing_pad_size" : "M",
| |
− | "has_blackmarket" : 0,
| |
− | "has_commodities" : 1,
| |
− | "updated_at" : 1434929486,
| |
− | "has_outfitting" : 0,
| |
− | "government" : "Democracy",
| |
− | "state" : null,
| |
− | "has_shipyard" : 0,
| |
− | "type" : "Unknown Outpost",
| |
− | "has_rearm" : 0,
| |
− | "allegiance" : "Federation",
| |
− | "has_refuel" : 1,
| |
− | "name" : "Kinsey Ring",
| |
− | "listings" : [
| |
− | {
| |
− | "commodity" : "Hydrogen Fuel",
| |
− | "supply" : 129630,
| |
− | "collected_at" : 1421669319,
| |
− | "update_count" : "1",
| |
− | "buy_price" : 93,
| |
− | "sell_price" : 89,
| |
− | "demand" : 0
| |
− | },
| |
− | {
| |
− | "commodity" : "Mineral Oil",
| |
− | "supply" : 0,
| |
− | "collected_at" : 1421669320,
| |
− | "update_count" : "1",
| |
− | "buy_price" : 0,
| |
− | "sell_price" : 326,
| |
− | "demand" : 217674
| |
− | },
| |
− | ],
| |
− | "distance_to_star" : 2359,
| |
− | "economies" : [
| |
− | "Industrial",
| |
− | "Refinery"
| |
− | ],
| |
− | "has_repair" : 1
| |
− | },
| |
− | {
| |
− | "max_landing_pad_size" : "L",
| |
− | "has_blackmarket" : 1,
| |
− | "has_commodities" : 0,
| |
− | "updated_at" : 1434929486,
| |
− | "has_outfitting" : 1,
| |
− | "government" : "Democracy",
| |
− | "state" : null,
| |
− | "has_shipyard" : 1,
| |
− | "type" : "Unknown Starport",
| |
− | "has_rearm" : 1,
| |
− | "allegiance" : "Federation",
| |
− | "has_refuel" : 1,
| |
− | "name" : "Wohler Port",
| |
− | "distance_to_star" : 3520,
| |
− | "economies" : [
| |
− | "Industrial",
| |
− | "Refinery"
| |
− | ],
| |
− | "has_repair" : 1
| |
− | }
| |
− | ],
| |
− | "name" : "1 Kappa Cygni",
| |
− | "faction" : "United 1 Kappa Cygni Future",
| |
− | "government" : "Democracy",
| |
− | "allegiance" : "Federation",
| |
− | "updated_at" : 1430938622,
| |
− | "state" : "None",
| |
− | "needs_permit" : 0,
| |
− | "y" : 37.78125,
| |
− | "x" : -117.75,
| |
− | "security" : "High",
| |
− | "z" : 11.1875,
| |
− | "primary_economy" : "Industrial",
| |
− | "population" : 24843190
| |
− | }
| |
− | | |
− | </pre>
| |
− | </div>
| |
− | Here is a list of all the keys used.
| |
− | <pre>
| |
− | commodities:
| |
− | _id, average_price, category, name
| |
− | systems:
| |
− | _id, allegiance, faction, government, name, population, primary_economy, security, state, stations, updated_at, x, y, z
| |
− | | |
− | systems.stations:
| |
− | allegiance, distance_to_star, economies, export_commodities,has_blackmarket, has_commodities, has_rearm, has_repair,
| |
− | has_shipyard, has_outfitting, faction, government, listings, max_landing_pad, name, state, type, updated_at
| |
− | | |
− | systems.stations.listings:
| |
− | buy_price, collected_at, demand, commodity, sell_price, supply, update_count
| |
− |
| |
− | </pre>
| |