|
|
|
@ -23,9 +23,9 @@
|
|
|
|
|
* level: int
|
|
|
|
|
* pokedexId: int
|
|
|
|
|
* evoStage: int
|
|
|
|
|
* (_indexed_: "species" is calculated as evo_track[evo_stage], and would often be queried)
|
|
|
|
|
* evoTrack: array of strings (therefore "species" is evo_track[evo_stage], and "evo_base" is evo_track[0])
|
|
|
|
|
* (_indexed_: "species" is calculated as evo_track[evo_stage], and would be queried often)
|
|
|
|
|
* (_indexed_: "species" is calculated as evoTrack[evoStage], and would often be queried)
|
|
|
|
|
* evoTrack: array of strings (therefore "species" is evoTrack[evoStage], and "evoBase" is evoTrack[0])
|
|
|
|
|
* (_indexed_: "species" is calculated as evoTrack[evoStage], and would be queried often)
|
|
|
|
|
* trainer: ObjectId? (reference to a trainer) (but can be "wild" instead, if ref is null)
|
|
|
|
|
* (_indexed_: could be queried often in a dashboard situation)
|
|
|
|
|
* types: embedded type, or array of embedded types
|
|
|
|
@ -38,7 +38,6 @@
|
|
|
|
|
* name: string
|
|
|
|
|
* (_indexed_: would often be queried in a dashboard situation)
|
|
|
|
|
* category: string (can be "physical", "special", or "status")
|
|
|
|
|
* pp: int
|
|
|
|
|
* power: int
|
|
|
|
|
* (_indexed_: would often be used in sorts, in a dashboard situation)
|
|
|
|
|
* accuracy: int
|
|
|
|
@ -56,18 +55,18 @@
|
|
|
|
|
|
|
|
|
|
## Relationships
|
|
|
|
|
|
|
|
|
|
* trainers.pastOpponents: one-to-many and reflexive
|
|
|
|
|
- [ ] trainers.pastOpponents: one-to-many and reflexive
|
|
|
|
|
* => referencing
|
|
|
|
|
* trainers.pokemongs: one-to-many
|
|
|
|
|
- [ ] trainers.pokemongs: one-to-many
|
|
|
|
|
* => referencing + denormalizing on "nickname" and "species"
|
|
|
|
|
* pokemongs.trainer: many-to-one
|
|
|
|
|
- [ ] pokemongs.trainer: many-to-one
|
|
|
|
|
* => referencing
|
|
|
|
|
* pokemongs.types: one-to-few [1;2]
|
|
|
|
|
- [x] pokemongs.types: one-to-few [1;2]
|
|
|
|
|
* => embedding
|
|
|
|
|
* pokemongs.moveSet: one-to-few [1;4] but will also need to be queried independently
|
|
|
|
|
- [x] pokemongs.moveSet: one-to-few [1;4] but will also need to be queried independently
|
|
|
|
|
* => referencing + denormalizing on "name"
|
|
|
|
|
* moves.type: one-to-one [1;1]
|
|
|
|
|
- [x] moves.type: one-to-one [1;1]
|
|
|
|
|
* => embedding
|
|
|
|
|
* types.weakAgainst & types.effectiveAgainst: one-to-few, but reflexive
|
|
|
|
|
- [x] types.weakAgainst & types.effectiveAgainst: one-to-few, but reflexive
|
|
|
|
|
* => denormalizing on "name"
|
|
|
|
|
|