mongodb - Exigences pour les requêtes statistiques des tables liées à la mangouste
为情所困
为情所困 2017-05-02 09:24:37
0
2
1057

Je veux poser une question sur mongodb (mangouste).
Un blog a deux tables, articles et balises, une relation plusieurs-à-plusieurs
Le champ de balise dans la table article est un tableau, qui stocke les balises.id, lors de l'interrogation des articles, les données de chaque balise peuvent être associées
La demande actuelle est :
Bag de requête. Lorsque vous faites une liste, vous devez connaître en même temps le nombre d'articles dans lesquels chaque balise est incluse, c'est-à-dire compter
En plus de parcourir et d'établir manuellement le champ de comptage et de recompter lors de l'ajout, de la suppression ou de la suppression. modification du champ de comptage
Existe-t-il un meilleur moyen d'y parvenir via la méthode API mongoose, merci à tous !

为情所困
为情所困

répondre à tous(2)
PHPzhong

Résolu, une requête d'agrégation est nécessaire. Décomposer avant l'agrégation, puis agréger. Le code spécifique est que la requête d'agrégation elle-même peut interroger les exigences, mais les exigences sont des relations de données plusieurs-à-plusieurs, pas un-à-. plusieurs, ils doivent donc d'abord être décomposés en une seule relation

Extraits de code associés
Documents de référence associés

// 查询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);
    })
  };
習慣沉默

Il existe une fonctionnalité très utile appelée Population in mangouste, je vous suggère de la consulter

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal