假設我有一組答案,其中每個答案都包含一個user_id數組。按mongo中文檔數組中的元素數排序
- 答案has_and_belongs_to_many:用戶
是否有可能有一個排序由user_ids數的查詢?
Answer.all.desc(num_user_ids)
我可以緩存這個數字,但是我希望我沒有。我使用mongoid
假設我有一組答案,其中每個答案都包含一個user_id數組。按mongo中文檔數組中的元素數排序
是否有可能有一個排序由user_ids數的查詢?
Answer.all.desc(num_user_ids)
我可以緩存這個數字,但是我希望我沒有。我使用mongoid
這可能是這個問題的一個副本:How can I sort MongoDB query results by inner array size?
總結:不,你不能排序,你想數組的長度,該建議是一個附加字段存儲在包含用戶數量的文檔。
雖然你可以用MapReduce做到這一點。但是這會產生另一張桌子,這可能是不希望的。
這是一個古老的問題,但它是「按數組長度排序的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])