MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Phương thức Mongoose 'static' so với phương thức 'instance'

statics là các phương thức được định nghĩa trên Model. methods được định nghĩa trên tài liệu (phiên bản).

Bạn có thể sử dụng tĩnh phương thức như Animal.findByName :

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

Và bạn có thể sử dụng một phương pháp phiên bản như fido.findSimilarTypes :

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

Nhưng bạn sẽ không làm Animals.findSimilarTypes() bởi vì Động vật là một mô hình, nó không có "loại". findSimilarTypes cần một this.type sẽ không tồn tại trong mô hình Động vật, chỉ một cá thể tài liệu mới chứa thuộc tính đó, như được định nghĩa trong mô hình.

Tương tự, bạn sẽ không¹ làm fido.findByName bởi vì findByName sẽ cần phải tìm kiếm trong tất cả các tài liệu và fido chỉ là a tài liệu.

¹Vâng, về mặt kỹ thuật, bạn có thể , bởi vì phiên bản có quyền truy cập vào bộ sưu tập (this.constructor hoặc this.model('Animal') ) nhưng sẽ không hợp lý (ít nhất là trong trường hợp này) nếu có một phương thức instance không sử dụng bất kỳ thuộc tính nào từ instance. (cảm ơn @AaronDufour đã chỉ ra điều này)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ setIntersection

  2. mối quan hệ nhiều đến nhiều với nosql (mongodb và mongoose)

  3. Sắp xếp theo trường mảng tối đa, tăng dần hoặc giảm dần

  4. MongoDB $ concat

  5. Chọn Nhóm theo số lượng và số lượng riêng biệt trong cùng một truy vấn mongodb