MongoDb在其他Collection中按count计数

我有两个集合: collection Acollection B 集合B“A_id”将具有来自集合A的_id(有点像关系)。

集合A

 { _id, name } 

集合B

 { _id, A_id, other_id } 

我需要将文档重复数量的集合A中的文档分类到集合B中的A_id(如果可能,请按次数sorting)。 约束是我们不想在集合A中有一个数组,因为B中的文档会增长很多,并会不断更新。

任何想法如何执行这种sorting?

非常感谢

有很多方法可以做你所要求的。 你必须先了解一些有关数据的事情。 B文件有多less个文件?

  • 它看起来像你想要集合A有一个项目字段的文件是B的情况下,有一个16 MB的限制,但在大多数情况下工作得很好。

  • 用Blogging插入的数字记住A。 (也就是说,每次插入一个B,你都会在A上加上这个字段)。 然后,您将在A的计数字段上进行索引,然后进行sort({count: -1})

这是我的理解,这是不可能的。 但是,可以使用聚合框架组函数和$ sum accumulator通过A_id进行分组,这将使A_id与A_id中的集合B中的文档总数之间存在映射关系。 对映射进行sorting,然后您可以按照您所描述的顺序从集合A中select事物,不过您必须一次从集合A中select一个,因为您在select时间执行了sorting。

另一种select是在每个文档的集合A中都有一些计数字段,每当某个特定的A_id插入到集合B中时,就会增加逻辑。