簡體   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