【问题标题】:How to find all and sort by count?如何查找所有并按计数排序?
【发布时间】:2012-11-01 02:06:47
【问题描述】:

如何构建一个查询,返回所有按嵌入式帖子 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

【问题讨论】:

    标签: ruby mongodb mongoid3


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 您可以使用聚合框架轻松完成此操作。但是,按照建议添加数组长度字段会更有效。
    猜你喜欢
    • 2022-09-29
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2021-11-02
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多