假设我有一个答案集合,其中每个答案都包含一个user_ids数组。
是否可以按user_ids的数量排序查询?
Answer.all.desc(num_user_ids)
我可以缓存这个号码,但我希望我没有。我正在使用mongoid
答案 0 :(得分:4)
这可能是这个问题的重复:How can I sort MongoDB query results by inner array size?
总结一下:不,你不能按照你想要的数组长度排序,建议在文档中存储一个包含用户数的附加字段。
但是你可以用MapReduce做到这一点。但这会产生另一张表,这可能是不可取的。
答案 1 :(得分:1)
这是一个老问题,但它是“按阵列长度排序的mongoid”的最佳结果,它不再正确。
此查询可以使用Mongo集合框架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])