如何按匹配条件的数组中的元素对MongoDB结果进行排序?

时间:2016-07-13 12:14:37

标签: mongodb mongodb-query mongodb-aggregation

我有一些像这样的地方:

{
"_id" : ObjectId("575014da6b028f07bef51d10"),
"name" : "MooD",
.
.
.
"categories" : [
    {
        "categoryList" : [Nightlife, Bar],
        "weight" : 8
    },
    {
        "categoryList" : [Restaurant, Italian Restaurant],
        "weight" : 4
    }
]
}

我想按类别搜索地点,例如" Bar"。 所以,我研究了类别' categoryList如果有" Bar"。 在那之后,我想根据匹配类别的重量进行排序, 这样,上面的地方(酒吧重量为8)出现在另一个酒吧重量为5的地方之前。

1 个答案:

答案 0 :(得分:2)

您必须使用聚合框架。 检查一下:

db.mongo.aggregate(
    { $unwind: '$scores' },
    { $match: {
        'scores.categoryList': 'Bar'
    }},
    { $sort: {
        'scores.weight': -1
    }}
)