statics är de metoder som definieras i modellen. methods definieras på dokumentet (instansen).
Du kan använda en statisk metod som Animal.findByName :
const fido = await Animal.findByName('fido');
// fido => { name: 'fido', type: 'dog' }
Och du kan använda en instans metod som fido.findSimilarTypes :
const dogs = await fido.findSimilarTypes();
// dogs => [ {name:'fido',type:'dog} , {name:'sheeba',type:'dog'} ]
Men du skulle inte göra Animals.findSimilarTypes() eftersom Animals är en modell har den ingen "typ". findSimilarTypes behöver en this.type som inte skulle existera i djurmodellen, bara en dokumentinstans skulle innehålla den egenskapen, enligt definitionen i modellen.
På samma sätt skulle du inte¹ göra fido.findByName eftersom findByName skulle behöva söka igenom alla dokument och fido är bara a dokumentera.
¹Tja, tekniskt sett kan det , eftersom instansen har tillgång till samlingen (this.constructor eller this.model('Animal') ) men det skulle inte vara meningsfullt (åtminstone i det här fallet) att ha en instansmetod som inte använder några egenskaper från instansen. (tack till @AaronDufour för att du påpekade detta)