2011-08-07 34 views
7

Tôi đã xem xét hầu hết các bài viết thiết kế sơ đồ mongodb trên trang web của mongo và hầu hết các câu hỏi ở đây trên SO. Vẫn còn một trường hợp sử dụng mà tôi đã không tìm ra. Khi xem các hướng dẫn này, họ thường tham khảo bài viết bình luận về vấn đề và các vấn đề về sản phẩm/loại. Tôi muốn tìm hiểu làm thế nào để mô hình một đến nhiều mối quan hệ (tác giả bài viết) khi truy vấn một danh sách các bài viết. Dưới đây là các lược đồ mẫu:Cách thiết kế lược đồ cho mô hình tác giả/người dùng trong mongodb

Users: { 
    _id: ObjectID 
    Name: String 
    Email: String 
} 

Posts: { 
    _id: ObjectID 
    user_id: ObjectID 
    body: String 
    comments: [ 
     body: String 
    ] 
} 

Bây giờ, giả sử bạn muốn chạy truy vấn cho 10 bài đăng mới nhất. Một truy vấn khá đơn giản, nhưng bây giờ bạn có các bài viết với khả năng của mỗi người có một ObjectID duy nhất trỏ đến người dùng. Bây giờ, làm thế nào bạn nên thực hiện nhận được tên và email của mỗi người dùng cho một bài đăng.

  1. bạn nên tạo một mảng của người sử dụng của ObjectId từ truy vấn viết và sau đó chạy db.users.find truy vấn ({_id: {$ trong: PostsUserIDArray}}); Sau đó, bạn sẽ sử dụng logic ứng dụng của mình để khớp đúng thông tin người dùng với bài đăng chính xác?

  2. Nếu bạn giữ bản sao dữ liệu trong bài đăng. I E. giữ ID người dùng, tên và email trong bảng bài đăng. Sau đó, chỉ cần có một cái móc khi người dùng cập nhật thông tin này để cập nhật tất cả thông tin trong bài đăng.

  3. Một tùy chọn mà bản thân tôi hoặc bạn tôi chưa từng nghĩ tới.

Tôi đánh giá cao tất cả trợ giúp khi tôi cố gắng quấn đầu quanh mô hình dữ liệu mongo.

Trả lời

2

Đối với một số video tôi đã thấy từ những người sáng tạo MongoDB, họ ủng hộ giải pháp thứ hai. Nếu người dùng của bạn có nhiều dữ liệu hơn chỉ là tên và email và nếu bạn chỉ hiển thị tên và email khi hiển thị apost, thì nó không thực sự tệ để lưu trữ nó trong bài đăng. Vì vậy, bạn không phải thực hiện các truy vấn khác khi truy vấn bài đăng. Và vì người dùng thường không thay đổi tên của anh ấy mỗi ngày, nên chạy bản cập nhật cho tất cả các bài đăng một khi anh ấy thay đổi tên của mình hơn là thực hiện các truy vấn khác để truy xuất thông tin khi hiển thị bài đăng.

Chỉnh sửa: liên kết tới video http://lacantine.ubicast.eu/videos/3-mongodb-deployment-strategies/

+0

Cảm ơn, bạn có liên kết đến bất kỳ video nào trong số những video đó không đúng cơ hội không? Tôi rất muốn xem một nơi họ nói về điều này. – rickharrison

+0

Tôi đã cập nhật bài đăng của mình bằng một trong các video. – TrexXx

+0

Có thể bạn nên xem xét bài viết này http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1 – olyjosh

Các vấn đề liên quan