MongoDb排序按其他Collection中的count计数

时间:2014-08-06 21:57:18

标签: javascript node.js mongodb sorting

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

收藏A

{
  _id,
  name
}

收集B

{
 _id,
 A_id,
 other_id
}

我需要将收集A中的文档按文件重复量排序到收集B中的A_id(如果可能,按计数排序)。限制是我们不希望在集合A中有一个数组,因为B中的文档会增长很多,并且会不断更新。

知道如何进行这种排序吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

据我了解,这不是严格可行的。但是,您可以使用aggregation framework group function和$ sum累加器按A_id进行分组,这将为您提供A_id与集合B中具有该A_id的文档总数之间的映射。对该映射进行排序,然后您可以按照您描述的顺序从集合A中选择事物,尽管您必须在选择时强制执行排序时一次从集合A中进行选择。

另一个选项是在每个文档的集合A中都有一些计数字段,每次在具有特定A_id的集合B中插入某些内容时,您都将逻辑包含到increment

答案 1 :(得分:1)

有很多方法可以做你所要求的。您必须首先了解有关数据的一些信息。 B文件有多少文件?

  • 看起来你希望Collection A有一个包含B文档的items字段的情况。有16 MB的限制,但大多数情况下工作得很好。

  • 在A上插入B记录的数量。 (即每次你插入一个B,你在{A}上的$inc字段。然后,您将对A的计数字段执行索引并执行sort({count: -1})