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

truy vấn một bộ sưu tập mà không chuyển lược đồ trong mongoose

Từ trang chủ Mongoose:

Mongoose cung cấp giải pháp đơn giản dựa trên giản đồ mô hình hóa dữ liệu ứng dụng của bạn và bao gồm truyền kiểu tích hợp, xác thực, xây dựng truy vấn, móc logic nghiệp vụ và hơn thế nữa.

Mongoose không thể suy ra từ một tập hợp các tài liệu có khả năng duy nhất một lược đồ. MongoDB không thực thi lược đồ trên các tài liệu được lưu trữ trong một bộ sưu tập.

Vì vậy, Mongoose thêm một lớp vào trình điều khiển gốc NodeJS (tại đây) mà nhiều người thấy hiệu quả hơn. Không bắt buộc phải sử dụng với MongoDB khi sử dụng Node.JS.

Mongoose về cơ bản cần hai thứ để hoạt động:

  1. Lược đồ ==này xác định cấu trúc tài liệu (tham chiếu). Bạn có thể thêm xác thực, phương thức mới, thêm thuộc tính ảo, sử dụng kiểu dữ liệu, thiết lập tham chiếu đến các bộ sưu tập (mô hình) khác.
  2. Model ==đây là lớp sau đó được sử dụng tại thời điểm chạy để thể hiện các truy vấn đối với các tập hợp (tham chiếu). Định nghĩa Lược đồ được sử dụng để xây dựng Mô hình.

Vì vậy, như bạn đã thấy trong mẫu bạn đã dán, có một Schema mèo con được xác định, và sau đó là Model Kitten được tạo ra. Điều thú vị khi sử dụng lược đồ và mô hình là Mongoose sau đó thực thi các thuộc tính / trường có sẵn.

Bạn chỉ xác định Schema s và Model s một lần trong một ứng dụng. Vì vậy, thông thường khi ứng dụng khởi động, bạn sẽ cần thực thi mã để xác định chúng, sau đó sử dụng Model các trường hợp cần thiết trong suốt vòng đời của ứng dụng.

Có nhiều lý do khác khiến bạn muốn sử dụng Mongoose.

Mặc dù vậy, bạn hoàn toàn đúng, bạn chỉ có thể sử dụng thứ gì đó trực tiếp hơn, không cần lược đồ bằng cách sử dụng trình điều khiển gốc NodeJS. Cú pháp sẽ tương tự như những gì bạn đã hiển thị, nhưng phức tạp hơn một chút:

MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
  if(err) { return console.dir(err); }

  var collection = db.collection('kittens');

    collection.find().toArray(function(err, kittens) {
        // here ...
    });    
});

Thay vì đơn giản:

Kitten.find(function(err, kittens) {

});

Ngoài ra, khi sử dụng Mongoose, bạn có thể thấy rằng việc viết các truy vấn phức tạp hơn sẽ dễ viết và dễ đọc hơn:

Kitten.find().where('name', 'Harold').exec(/*callback*/);

Tôi khuyên bạn nên đọc qua nhiều tài liệu hơn để có cảm nhận tốt hơn về khung và liệu nó có phù hợp với nhu cầu của bạn hay không. Thật không may, tài liệu này hơi rải rác, nhưng nếu bạn xem qua các tiêu đề phụ của Guide đầu đề, bạn sẽ có rất nhiều thông tin tốt có sẵn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn MongoDB để khớp trong mục đầu tiên trong một mảng

  2. Làm cách nào để thay đổi cấu trúc của các kết quả thu nhỏ bản đồ của MongoDB?

  3. Cuộc chiến của các cơ sở dữ liệu NoSQL - So sánh MongoDB và CouchDB

  4. Xuất Bộ sưu tập MongoDB sang Tệp CSV

  5. Làm mới trang Meteor bằng cách nhấp vào nút