mongodb查询并按列表项排序

时间:2014-09-23 03:11:38

标签: mongodb mongodb-query aggregation-framework

如何按funnelSteps[0].count对文档进行排序,即如何按第一个count的{​​{1}}个数进行排序?

谢谢。

funnelSteps

1 个答案:

答案 0 :(得分:1)

MongoDB使用"dot notation"来引用结构中的嵌套元素,因此您确实可以通过索引指定元素:

db.collection.find().sort({ "funnelSteps.0.count": 1 })

1的排序顺序为升序,-1为降序排序。有关详细信息,请参阅.sort()

这对于已知的"数组元素的位置,但如果你想按照"最少"之类的东西进行排序。 " funnelSteps"然后你会用.aggregate()

做这样的事情
db.collection.aggregate([
    { "$unwind": "$funnelSteps" },
    { "$group": {
        "_id": "$_id",
        "funnelSteps": { "$push": "$funnelSteps" },
        "lowestCount": { "$min": "$funnelSteps.count" } 
    }},
    { "$sort": { "lowestCount": 1 } }
])

所以在这种情况下,你需要"拉开"数组,以便在排序之前获得您想要的值。但是对于已知位置,您可以使用基本参数进行排序,如图所示。