MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Metody „statyczne” mangusty a metody „instancyjne”

statics są metodami zdefiniowanymi w Modelu. methods są zdefiniowane w dokumencie (instancji).

Możesz użyć statycznego metoda taka jak Animal.findByName :

const fido = await Animal.findByName('fido');
// fido => { name: 'fido', type: 'dog' }

Możesz użyć instancji metody jak fido.findSimilarTypes :

const dogs = await fido.findSimilarTypes();
// dogs => [ {name:'fido',type:'dog} , {name:'sheeba',type:'dog'} ]

Ale nie zrobiłbyś Animals.findSimilarTypes() ponieważ Animals jest modelem, nie ma „typu”. findSimilarTypes potrzebuje this.type które nie istniałyby w modelu Animals, tylko instancja dokumentu zawierałaby tę właściwość, zgodnie z definicją w modelu.

Podobnie nie zrobiłbyś¹ ¹ fido.findByName ponieważ findByName musiałby przeszukać wszystkie dokumenty i fido to po prostu a dokument.

¹ Cóż, z technicznego punktu widzenia możesz , ponieważ instancja ma dostęp do kolekcji (this.constructor lub this.model('Animal') ), ale nie miałoby sensu (przynajmniej w tym przypadku) posiadanie metody instancji, która nie używa żadnych właściwości z instancji. (dzięki @AaronDufourowi za wskazanie tego)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb:znajdowanie najwyższej wartości liczbowej w kolumnie

  2. MongoDB do korzystania z fragmentowania z operatorem agregacji $lookup

  3. Błąd Node.js:Nie można znaleźć modułu „mongoose”

  4. MongoDB-as-a-Service na własnym koncie Amazon AWS

  5. Śledzić wydajność MongoDB?