Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mewakili data untuk komentar berulir (bersama dengan pemungutan suara komentar) di mongodb?

Simpan saja komentar seperti yang Anda inginkan terwakili di blog Anda. Anda ingin komentar berulir/bersarang? Kemudian simpan dengan cara bersarang:

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 mengacu pada entri blog yang berisi komentar dan telah digunakan sebagai kunci (atau _id di MongoDB) dari dokumen. Setiap komentar memiliki id yang unik , untuk memilih atau mengomentari komentar individu.

Untuk mendapatkan suara yang dikumpulkan, Anda harus menulis fungsi pengurangan peta di suatu tempat di sepanjang baris ini:

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 };
}

Saya belum menguji fungsi-fungsi ini dan mereka tidak memeriksa null nilai-nilai baik. Terserah kamu :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Array host basis data kosong. setelah menerapkan proyek Laravel di AWS Elastic Beanstalk

  2. Peringatan:Penantian semaphore yang lama

  3. Buat Pengguna MySQL di Linux melalui Command Line

  4. Untuk contoh loop di MySQL

  5. Ubah nilai mysql LONGTEXT ke nilai VARCHAR?