84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
文章以及课程模型需要定义所属分类,该分类是多级的,MongoDB中怎么设计比较合理?如果直接定义在文档里,担心一致性的问题!
小伙看你根骨奇佳,潜力无限,来学PHP伐。
MongoDB 中的集合或嵌入式文档 是也乎,相关的专门思考
我是这么做的:
{ 'name': '苹果', 'category1': '生鲜', 'category2': '水果' }
很容易查询和分级
如果内嵌文档 create/delete/update/ 操作较频繁的话,而且取数据时还有排序的要求,最多至三级比较好,不要内嵌太深。 我现在因为一些 collection 内嵌得太多,导致很多操作相当不方便,所以又得花很多功夫来把它们 extract 出来。 当然,如果你只是为了一次性存数据,对数据的操作以读为主,就不用考虑这么多。 像你提出来的课程文章分类,如果我没理解错需求的话,可不可以这样:
create/delete/update/
collection
extract
"_id": "name" : "category" : [ { "_id" : "name" : "degree" : }, { "_id" : "name" : "degree" : }, ]
degree表示课程类别中的级数,这样一个文章在课程内的类别在读的时候按照 degree 来读取。例如,一篇文章为《牛顿第二定律》,它的课程分类为(物理->力)。那么就存为:
degree
"_id": "name" : "category" : [ { "_id" : "name" : '物理' "degree" : 1 }, { "_id" : "name" : '力' "degree" : 2 }, ]
读数据的时候按 category 的 degree 来 sort 即可。
category
sort
这里其实还是一个设计权衡,和mongdb并没有什么太大关系,即便是mysql,一样需要思考这个问题! 个人感觉还是得从业务出发,思考一下所要分析的业务数据是否满足限制条件,例如说是否要求实时一致性还是满足最终一致性即可。
另一个层面,对于mongdb本身,它的内嵌文档和普通文档差别并不大,但是如果你索要增加的内嵌文档是一个频繁更改的,尤其是大小没有什么限制的话,还是用关联比较合适!
分类定义为一个嵌套文档 即可,因为你不会经常去更新它。
用引用吧.
MongoDB 中的集合或嵌入式文档
是也乎,相关的专门思考
我是这么做的:
很容易查询和分级
如果内嵌文档
create/delete/update/
操作较频繁的话,而且取数据时还有排序的要求,最多至三级比较好,不要内嵌太深。我现在因为一些
collection
内嵌得太多,导致很多操作相当不方便,所以又得花很多功夫来把它们extract
出来。当然,如果你只是为了一次性存数据,对数据的操作以读为主,就不用考虑这么多。
像你提出来的课程文章分类,如果我没理解错需求的话,可不可以这样:
degree
表示课程类别中的级数,这样一个文章在课程内的类别在读的时候按照degree
来读取。例如,一篇文章为《牛顿第二定律》,它的课程分类为(物理->力)。那么就存为:读数据的时候按
category
的degree
来sort
即可。这里其实还是一个设计权衡,和mongdb并没有什么太大关系,即便是mysql,一样需要思考这个问题!
个人感觉还是得从业务出发,思考一下所要分析的业务数据是否满足限制条件,例如说是否要求实时一致性还是满足最终一致性即可。
另一个层面,对于mongdb本身,它的内嵌文档和普通文档差别并不大,但是如果你索要增加的内嵌文档是一个频繁更改的,尤其是大小没有什么限制的话,还是用关联比较合适!
分类定义为一个嵌套文档 即可,因为你不会经常去更新它。
用引用吧.