如何找到所有并按计数排序?

时间:2012-10-31 17:52:50

标签: ruby mongodb mongoid3

如何构建一个查询,返回按计数嵌入的post id排序的所有实体?

示例数据:

{ "_id" : ObjectId( "5090f8061e7bf28095000012" ),
  "name" : "test",
  "post_ids" : 
    [ ObjectId( "5090f8061e7bf28095000010" ) ],
    [ ObjectId( "5090f8061e7bf28095000011" ) ] },
{ "_id" : ObjectId( "5090f8061e7bf28095000012" ),
  "name" : "test2",
  "post_ids" : [ 
    ObjectId( "5090f8061e7bf28095000010" ), 
    ObjectId( "509104ec1e7bf2989b00000b" ), 
    ObjectId( "509105001e7bf2989b00000f" ) ] }

#my actual query returns only count:
tags_by_count = Tag.desc(:post_ids).count

1 个答案:

答案 0 :(得分:1)

我不认为这在MongoDB中是可行的。我正在阅读的所有内容都建议为数组的长度创建第二个字段并将其编入索引。

这有点旧,但可能仍然相关:

https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/zSSnj6ldfLE

此外,即使有可能,它也会很慢,因为它需要使用javascript而不是索引排序,因为你绝对不能索引数组长度。