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

Mô hình hóa dữ liệu Mongo / cập nhật để bỏ phiếu (lên và xuống)

Có vẻ đơn giản hơn nhiều khi sử dụng lược đồ thứ hai.

Document:  { name: "name",
             upvoters: [name1, name2, etc],
             downvoters: [name1, name2, etc],
           }

Để có được tổng số phiếu bầu, bạn có thể lấy doc và usedoc.upvoters.length-doc.downvoters.length (bắt đầu mỗi tài liệu với mảng số phiếu bầu ủng hộ và người bầu cử phản đối là [])

Để ghi lại bất kỳ ủng hộ nào của Người dùng "x" trên mục "c", chỉ cần thực hiện:

db.votes.update({name:"c"},{$addToSet:{upvotes:"x"},$pull:{downvotes:"x"}})

Đây là nguyên tử và nó có ưu điểm là làm được điều tương tự ngay cả khi bạn chạy nó 10 lần. Nó cũng giúp bạn không phải kiểm tra xem "x" đã bỏ phiếu cho "c" chưa và theo cách nào.

Để ghi lại phiếu phản đối, chỉ cần đảo ngược nó:

db.votes.update({name:"c"},{$addToSet:{downvotes:"x"},$pull:{upvotes:"x"}})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo có thể trả lại các tài liệu có các trường trống / thiếu ở cuối theo thứ tự asc không?

  2. Mongoose:Làm cách nào để tải lên số liệu thống kê dữ liệu trong 7 ngày qua từ DB?

  3. Tại sao MongoDB lại chiếm quá nhiều dung lượng?

  4. MongoDB C # Driver:Bỏ qua Thuộc tính trên Chèn

  5. mongo log xoay không hoạt động trên windows