2014-10-06 80 views
0

我有一个应用程序,客户想要在同一个列表中看到多种类型的文档:(Purchase Orders,Payments,Travel requests)。他们希望能够对存在于所有三种文档类型中的某些字段进行文本搜索,并且能够在所有三个文档都具有的特定字段上对其进行分类。该列表还必须分页。MongoDB收集设计加入数据

我原本计划将文档放在单独的集合中,因为它们显然是不同类型的文档,但我不知道如何完成它们想要的完整列表,因为我必须将集合合并在一起才能形成1个列表有效率的。

我真的很想避免创建一个包含所有这些不同文档类型的集合,因为我不认为它是组织数据的好方法,也不认为这个列表视图应该是我们如何组织数据的决定性因素但我不确定是否有速度因素将它们分成3个集合,过滤和连接数据,然后对连接列表执行排序和分页。任何人对我应该做什么或者是否有类似情况的经验有任何建​​议?

+0

MongoDB是相当快的自身,所以加入几百列表中,不会有太大的麻烦。 – Ravi 2014-10-06 09:57:05

+0

对不起,不知道你指的是什么。你的意思是使用一个集合或拆分集合并将它们加入代码中?如果它将它们加入代码中,那么单独的集合可能会有数千条记录放入每个列表中,然后进行排序。节点可以处理这种类型的处理,还是有办法在数据库本身上做到这一点? – mu888 2014-10-06 10:09:18

+1

Mongo具有一些很好的内置功能,比如'aggregation'框架和所有功能。 IMO应该将数据存储在不同的集合中,并在稍后加入。 – Ravi 2014-10-06 10:23:18

回答

0

您需要为每个采购订单,付款,差旅请求制作不同的集合。

Mongodb提供汇总的功能。汇总操作将来自多个文档的值组合在一起,并且可以对分组数据执行各种操作以返回单个结果。所以它可以帮助您在所有其他文档中搜索字段。

你可以学到聚集在这里Mongodb aggregation