2012-12-02 12 views
5

Tôi đang cố gắng để có kế hoạch api của tôi, ví dụ:Mongoose - nhiều schemas sử dụng bộ sưu tập đơn

/animals   // returns all animals 
/animals/dogs  // returns all dogs 
/animals/cats  // returns all cats 
/animals/dogs/:id // returns dog 

Vì vậy, tôi có các mô hình riêng biệt cho cả hai 'mèo' và 'chó', vì chúng sẽ chứa độc đáo các thuộc tính, tuy nhiên cả hai đều sử dụng lược đồ 'động vật' làm plugin cơ sở.

Vì vậy, câu hỏi của tôi đi về nơi để lưu trữ dữ liệu, lựa chọn của tôi là:

1) bộ sưu tập Độc thân - lưu trữ cả chó và mèo trong một bộ sưu tập duy nhất, điều này sẽ làm cho nhận dữ liệu cho '/ động vật tương đối dễ dàng với một truy vấn đơn lẻ

2) Nhiều bộ sưu tập - lưu trữ cả mèo và chó trong bộ sưu tập riêng lẻ, điều này sẽ giúp lưu trữ dữ liệu hợp lý hơn, tuy nhiên khi nhận dữ liệu cho '/ animals' sẽ yêu cầu nhiều truy vấn và ghép nối dữ liệu đó.

Có bất kỳ tùy chọn nào khác mà tôi đã bỏ lỡ hoặc phương pháp tiếp cận ưa thích không?

Cảm ơn

Trả lời

0

Điều gì tốt đẹp về Mongodb là lược đồ ít hơn. Âm thanh như thế chính là thứ bạn cần. Tôi sẽ xem xét sử dụng chỉ là đồng bằng node-mongodb-native, và lưu trữ tất cả các loài động vật trong một bộ sưu tập duy nhất.

1

Các tùy chọn bạn đã đề cập là phương pháp tiếp cận phù hợp nhất cho sự cố của bạn.

Đối với trường hợp cụ thể của bạn nếu các thuộc tính duy nhất của từng mô hình không lớn đi theo cách 1 lưu trữ tất cả dữ liệu trong một bộ sưu tập và truy vấn dễ dàng.

Nếu không, nếu mô hình của bạn khá nặng và có nhiều thuộc tính tách chúng thành các bộ sưu tập khác nhau và truy vấn chúng theo mô hình tương ứng. . Có nghĩa là đi với tùy chọn 2.

+0

Tôi đang ở cùng điểm với leepowell. Nhưng câu hỏi của tôi là liên quan đến câu trả lời của bạn. Nếu tôi đã đi với # 1, những gì sẽ là định nghĩa của bạn "không phải là lớn" ?? Tôi biết bạn không thể có được các yếu tố cụ thể do ennumerable. Nhưng có một số ballpark, nơi bạn sẽ đề nghị đi với # 2 trên # 1 ?? Tôi đang phát triển một DB sẽ chứa các yếu tố cụ thể của các đối tượng học tập từ xa, cả triển khai và đang được phát triển. Hoặc là 'điểm ngắt' giữa loại # 1 và # 2 của tùy chọn nhà phát triển? –