recherche

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

mongoengine - MongoDB怎么设计多级分类好?

文章以及课程模型需要定义所属分类,该分类是多级的,MongoDB中怎么设计比较合理?如果直接定义在文档里,担心一致性的问题!

伊谢尔伦伊谢尔伦2767 Il y a quelques jours886

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

  • 怪我咯

    怪我咯2017-04-22 09:01:46

    Collections ou documents intégrés dans MongoDB
    Oui, des pensées spéciales liées

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-22 09:01:46

    Voici ce que j'ai fait :

    {
        'name': '苹果',
        'category1': '生鲜',
        'category2': '水果'
    }
    

    Facile à rechercher et à classer

    répondre
    0
  • 怪我咯

    怪我咯2017-04-22 09:01:46

    Si le document intégré create/delete/update/ fonctionne fréquemment et qu'il existe des exigences de tri lors de la récupération des données, il est préférable d'avoir au plus trois niveaux et de ne pas l'intégrer trop profondément.
    Maintenant, j'en ai trop de collection intégrés, ce qui rend de nombreuses opérations très gênantes, je dois donc déployer beaucoup d'efforts pour les supprimer extract.
    Bien sûr, si vous ne souhaitez stocker des données qu'une seule fois et que les opérations sur les données consistent principalement à lire, vous n'avez pas besoin de trop réfléchir.
    Comme le classement des articles de cours que vous avez proposé, si je comprends bien les exigences, cela peut-il être comme ça :

    "_id":
    "name" : 
    "category" : [ 
        {
            "_id" : 
            "name" : 
            "degree" :
        }, 
        {
            "_id" : 
            "name" : 
            "degree" :
        }, 
    ]
    

    degree représente le niveau dans la catégorie du cours De cette façon, la catégorie d'un article dans le cours est lue en fonction de degree lors de la lecture. Par exemple, un article s'intitule « Deuxième loi de Newton » et sa classification de cours est (Physique -> Force). Enregistrez-le ensuite sous :

    "_id":
    "name" : 
    "category" : [ 
        {
            "_id" : 
            "name" : '物理'
            "degree" : 1
        }, 
        {
            "_id" : 
            "name" : '力'
            "degree" : 2
        }, 
    ]
    

    Lors de la lecture des données, appuyez sur category et degree pour sort.

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-22 09:01:46

    Il s'agit en fait d'un compromis de conception, et cela n'a rien à voir avec mongdb. Même MySQL doit encore réfléchir à ce problème !
    Personnellement, je pense qu'il faut encore partir du point de vue métier et se demander si les données métiers à analyser répondent aux contraintes, par exemple si elles nécessitent une cohérence temps réel ou une cohérence finale.

    À un autre niveau, pour mongdb lui-même, ses documents intégrés ne sont pas très différents des documents ordinaires. Cependant, si le document intégré que vous souhaitez ajouter change fréquemment, surtout s'il n'y a pas de limite de taille, vous devriez le faire. utilisez toujours l'association. Plus approprié!

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-22 09:01:46

    Définissez simplement la catégorie comme un document imbriqué car vous ne la mettrez pas souvent à jour.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-22 09:01:46

    Utilisez des guillemets.

    répondre
    0
  • Annulerrépondre