繁体   English   中英

MongoDb按其他集合中的计数对集合进行排序

[英]MongoDb sort Collection by count in other Collection

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

集合A

{
  _id,
  name
}

集合B

{
 _id,
 A_id,
 other_id
}

我需要按照集合B中A_id的重复数量对集合A中的文档进行排序(如果可以的话,按计数排序)。 约束是我们不想在集合A中有一个数组,因为B中的文档会增长很多并且会不断更新。

任何想法如何执行这种排序?

非常感谢

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

另一个选择是在每个文档的集合A中都有一些计数字段,您可以在每次添加带有特定A_id的内容到集合B中的内容时增加逻辑。

有很多方法可以满足您的要求。 您必须首先了解有关数据的一些知识。 B文件将有多少个文件?

  • 看起来您希望集合A的item字段的文档字段为B。这有16 MB的限制,但是在大多数情况下都可以。

  • 保持对A的计数,并插入B记录的数量。 (即,每次插入B时,您都会在A的字段中$inc )。 然后,在A的count字段上做一个索引,然后进行sort({count: -1})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM