2011-09-21 75 views
4

假設我有一組答案,其中每個答案都包含一個user_id數組。按mongo中文檔數組中的元素數排序

  • 答案has_and_belongs_to_many:用戶

是否有可能有一個排序由user_ids數的查詢?

Answer.all.desc(num_user_ids)

我可以緩存這個數字,但是我希望我沒有。我使用mongoid

回答

4

這可能是這個問題的一個副本:How can I sort MongoDB query results by inner array size?

總結:不,你不能排序,你想數組的長度,該建議是一個附加字段存儲在包含用戶數量的文檔。

雖然你可以用MapReduce做到這一點。但是這會產生另一張桌子,這可能是不希望的。

1

這是一個古老的問題,但它是「按數組長度排序的mongoid」的最高結果,它不再正確。

該查詢可以使用Mongo Collection框架作爲in this question來完成。

當mongoid做它看起來是這樣的:

unwind = { '$unwind' => '$tags' } 
group = { '$group' => 
    { '_id' => '$_id', 'tags' => { '$push' => '$tags' }, 'count' => { '$sum' => 1 } } 
} 
sort = { '$sort' => { 'count' => 1 } } 
Photo.collection.aggregate([unwind, group, sort])