假设我有一组答案,其中每个答案都包含一个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])