recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Excusez-moi, si un article a plusieurs balises et qu'il y a plusieurs articles sous une seule balise, comment concevoir un tableau avec Mogoose?

Le scénario d'utilisation est le suivant :

Lors de la publication d'un article, ajoutez des balises. Il y a de nombreuses balises dans un article,

Alors lors de la recherche d'un tag, comment interroger tous les articles de ce tag ? ?

Alors, quelle est l'idée globale de conception de données de mongoodb ? S'il vous plaît, donnez-moi quelques réponses, merci

给我你的怀抱给我你的怀抱2702 Il y a quelques jours818

répondre à tous(4)je répondrai

  • phpcn_u1582

    phpcn_u15822017-06-30 09:54:50

    L'article contient _id, title, tags, content
    Ensuite, les tags contiennent de nombreuses balises

    • _id

    • titre

    • étiquettes

      • tag1

      • tag2

      • tag3

    • contenu

    Vous pouvez le concevoir comme ceci
    Vous pouvez écrire une méthode pour renvoyer tous les articles sous une balise spécifique

    Post.getTag=function(tag,callback){
        mongodb.open(function(err,db){
            if(err){
                return callback(err);
            }
            db.collection('posts',function(err,collection){
                if(err){
                    mongodb.close();
                    return callback(err);
                }
                collection.find({
                    "tags":tag
                },{
                    "name":1,
                    "time":1,
                    "title":1
                }).sort({
                    time:-1
                }).toArray(function(err,docs){
                    mongodb.close();
                    if(err){
                        return callback(err);
                    }
                    callback(null,docs);
                });
            })
        });
    };

    Puis appelez-le dans l'itinéraire correspondant

    répondre
    0
  • 習慣沉默

    習慣沉默2017-06-30 09:54:50

    Lors de l'enregistrement de l'article, ajoutez l'identifiant de balise correspondant au tableau de balises (clé étrangère), et en même temps ajoutez l'identifiant de l'article (clé étrangère) à toutes les balises correspondantes

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-06-30 09:54:50

    Il s'agit d'un modèle plusieurs-à-plusieurs typique, la conception de la table est la suivante

    Article du tableau des articles

    CREATE TABLE `article` (
        `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '文章ID',
        `title` varchar(100) NOT NULL DEFAULT '' COMMENT '标题',
        `content` longtext COMMENT '文章内容',
        ...,
        PRIMARY KEY (`id`)
    ) ENGINE=InnoDB COMMENT='文章表';

    étiquettes de tablette

    CREATE TABLE `tags` (
        `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '标签ID',
        `name` varchar(30) NOT NULL DEFAULT '' COMMENT '标签名',
        PRIMARY KEY (`id`),
    ) ENGINE=InnoDB COMMENT='标签表';

    Tableau d'association d'articles et de tags article_tag

    CREATE TABLE `article_tag` (
        `article_id` int(11) unsigned DEFAULT '0' COMMENT '文章ID',
        `tag_id` int(11) unsigned DEFAULT '0' COMMENT '标签ID',
        KEY `FK_article_tag_tag_id` (`tag_id`),
        KEY `FK_article_tag_article_id` (`article_id`),
        CONSTRAINT `FK_article_tag_article_id` FOREIGN KEY (`article_id`) REFERENCES `article` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
        CONSTRAINT `FK_article_tag_tag_id` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB COMMENT='文章标签表';

    Idées spécifiques

    • Associer la table article et la table tags via la contrainte de clé étrangère de article_tag

    • Pour les opérations de balise d'article, si la balise existe déjà, il vous suffit d'ajouter ou de supprimer les données de la table article_tag

    • Si la balise n'existe pas, ajoutez d'abord la balise et l'article, puis ajoutez 文章ID<->标签IDdata à article_tag

    • Si vous souhaitez interroger tous les articles d'une balise, utilisez la table article_tag pour rejoindre à gauche (ou en ligne) la table d'articles

    • Si vous souhaitez interroger toutes les balises d'un article, utilisez la table article_tag pour rejoindre à gauche (ou en ligne) la table des balises

    • Dans les deux cas ci-dessus, si vous avez encore besoin de données de balise ou d'article, continuez simplement à créer un lien gauche vers la table de balises ou la table d'articles.

    répondre
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-30 09:54:50

    Je suis d'accord avec la solution ci-dessus. Un tableau pour les articles, un tableau pour les balises, puis créez un tableau correspondant de balises d'articles

    répondre
    0
  • Annulerrépondre