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?
给我你的怀抱
给我你的怀抱 2017-06-30 09:52:50
0
4
766

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

给我你的怀抱
给我你的怀抱

répondre à tous(4)
phpcn_u1582

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

習慣沉默

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

phpcn_u1582

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.

女神的闺蜜爱上我

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!