Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để biểu diễn dữ liệu cho các nhận xét theo luồng (cùng với biểu quyết nhận xét) trong mongodb?

Chỉ cần lưu trữ các nhận xét như bạn muốn chúng được trình bày trên blog của bạn. Bạn muốn nhận xét theo luồng / lồng nhau? Sau đó, lưu trữ chúng theo kiểu lồng nhau:

postId: {
  comments: [
    {
      id: "47cc67093475061e3d95369d" // ObjectId
      title: "Title of comment",
      body: "Comment body",
      timestamp: 123456789,
      author: "authorIdentifier",
      upVotes: 11,
      downVotes: 2,
      comments: [
        {
          id: "58ab67093475061e3d95a684"
          title: "Nested comment",
          body: "Hello, this is a nested/threaded comment",
          timestamp: 123456789,
          author: "authorIdentifier",
          upVotes: 11,
          downVotes: 2,
          comments: [
            // More nested comments
          ]
        }
      ]
    },
    {
      // Another top-level comment
    }
  ]
}

postId đề cập đến bài đăng trên blog mà các nhận xét thuộc về và đã được sử dụng làm khóa (hoặc _id trong MongoDB) của tài liệu. Mỗi nhận xét có một id duy nhất , để bỏ phiếu hoặc bình luận về các nhận xét cá nhân.

Để nhận được các phiếu bầu tổng hợp, bạn sẽ cần viết các hàm thu nhỏ bản đồ ở đâu đó dọc theo các dòng sau:

function map() {
  mapRecursive(this.comments)
}

function mapRecursive(comments) {
  comments.forEach(
    function (c) {
      emit(comment.author, { upVotes: c.upVotes, downVotes: c.downVotes });
      mapRecursive(c.comments);
    }
  );
}

function reduce(key, values) {
  var upVotes = 0;
  var downVotes = 0;

  values.forEach(
    function(votes) {
      upVotes += votes.upVotes;
      downVotes += votes.downVotes;
    }
  );

  return { upVotes: upVotes, downVotes: downVotes };
}

Tôi chưa kiểm tra các chức năng này và chúng không kiểm tra null các giá trị. Điều đó tùy thuộc vào bạn :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi MySQL 2006 (HY000) tại dòng 406:Máy chủ MySQL đã biến mất

  2. Truy vấn được tham số hóa

  3. Vấn đề về ĐẶT HÀNG MYSQL THEO TRƯỜNG HỢP

  4. bao gồm mysql vào cmake

  5. Loại bỏ MySQL Split-Brain trong Cơ sở dữ liệu đa đám mây