mongoengine - MongoDB怎么设计多级分类好?
伊谢尔伦
伊谢尔伦 2017-04-22 08:59:46
0
6
905

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(6)
刘奇

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

Peter_Zhu

Voici ce que j'ai fait :

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

Facile à rechercher et à classer

刘奇

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.

伊谢尔伦

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é!

左手右手慢动作

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

Ty80

Utilisez des guillemets.

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