【问题标题】:Mongodb Sorting by valueMongodb 按值排序
【发布时间】:2016-09-11 10:08:17
【问题描述】:

这是我的收藏主题

{
 "_id" : "topic_1",
 "createdBy" : "user1",
 "bookmarkers_color" : [ 
    {
        "account_id" : "user1",
        "color" : "rgb(255, 152, 0)"
    }
 ]
},

{
 "_id" : "topic_2",
 "createdBy" : "user2",
 "bookmarkers_color" : [ 
    {
        "account_id" : "user2",
        "color" : "rgb(255, 152, 0)"
    }
 ]
},

{
 "_id" : "topic_3",
 "createdBy" : "user2",
 "bookmarkers_color" : [ 
    {
        "account_id" : "user1",
        "color" : "rgb(255, 152, 0)"
    },
    {
        "account_id" : "user2",
        "color" : "rgb(255, 152, 0)"
    }
 ]
}

我只需按 bookmarkers_color.account_id 对集合进行排序,其中 account_id 是 user1。并希望获得整个 TOPIC 集合作为回报。在这种情况下,我的预期输出应该是这样的,topic_2 应该排在最后。

【问题讨论】:

    标签: mongodb sorting mongodb-query


    【解决方案1】:

    正常的sort:

    db.topic.find().sort({'bookmarkers_color.account_id':1});
    

    使用升序排序,它按数组元素的最小值对文档进行排序,所以首先你会得到bookmarkers_color数组中存在account_id:"user1"的文档,然后是account_id:"user2"等的文档。

    【讨论】:

    • 实际上这些 account_ids (user1, user2) 只是虚拟的。我希望你知道随机 account_ids
    • @MohammadKashifSulaiman 我建议您在发布问题之前自己进行一些研究。互联网上有很多很好的资源。
    • @MohammadKashifSulaiman 如果不在问题中,我怎么能知道您的随机 account_ids?使用建议的解决方案不起作用的数据示例更新问题。
    【解决方案2】:
    db.topic.find({}).sort({"bookmarkers_color.account_id":1})
    

    这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 2023-03-13
      • 2016-07-26
      • 2018-03-06
      • 1970-01-01
      • 2022-12-16
      • 2012-10-24
      相关资源
      最近更新 更多