Rumah > Soal Jawab > teks badan
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!
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);
})
};
習慣沉默2017-05-02 09:26:37
Terdapat ciri yang sangat berguna yang dipanggil Populasi dalam mongoose, saya cadangkan anda menyemaknya