2011-09-21 74 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])