cari

Rumah  >  Soal Jawab  >  teks badan

mongodb - Keperluan untuk pertanyaan statistik jadual berkaitan mongoose

Saya ingin bertanya soalan tentang mongodb (mongoose). yang menyimpan teg id, apabila menanyakan artikel, data setiap teg boleh dikaitkan
Permintaan semasa ialah:
Teg pertanyaan Apabila membuat senarai, anda perlu mendapatkan pada masa yang sama berapa banyak artikel yang disertakan dalam setiap teg, iaitu, mengira
Selain melintasi dan mewujudkan medan kiraan secara manual dan mengira semula apabila menambah, memadam atau. mengubah suai medan kiraan
Adakah terdapat cara yang lebih baik untuk mencapainya melalui Kaedah API mongoose, terima kasih semua!

为情所困为情所困2793 hari yang lalu1068

membalas semua(2)saya akan balas

  • PHPz

    PHPz2017-05-02 09:26:37

    Selesai, pertanyaan pengagregatan diperlukan sebelum pengagregatan, dan kemudian agregat Kod khusus ialah pertanyaan pengagregatan itu sendiri boleh menanyakan keperluan, tetapi keperluannya adalah perhubungan data banyak-ke-banyak. banyak, jadi mereka mesti diuraikan menjadi satu hubungan satu dengan satu

    Coretan kod berkaitan
    Dokumen rujukan berkaitan

    // 查询article-tag的count聚合数据
      const getTagsCount = tags => {
        let $match = {};
        if (!authIsVerified(req)) {
          $match = { state: 1, public: 1 };
        }
        Article.aggregate([
          { $match },
          { $unwind : "$tag" }, 
          { $group: { 
            _id: "$tag", 
            num_tutorial: { $sum : 1 }}
          }
        ])
        .then(counts => {
          const newTags = tags.docs.map(t => {
            const finded = counts.find(c => String(c._id) === String(t._id));
            t.count = finded ? finded.num_tutorial : 0;
            return t;
          });
          tags.docs = newTags;
          querySuccess(tags);
        })
        .catch(err => {
          querySuccess(tags);
        })
      };

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-02 09:26:37

    Terdapat ciri yang sangat berguna yang dipanggil Populasi dalam mongoose, saya cadangkan anda menyemaknya

    balas
    0
  • Batalbalas