mongodb按nodejs中的两个字段排序

问题描述 投票:0回答:1

我使用mongodb和mongoose开发应用程序。我有一个名为product的集合,其中包含以下字段:

{
 color:String,
 sizes: [{type: String}],
 gender: String, //can be women / men / kids
 price: {
    type: Number, required: true, min: 0
  },
 likes: {type: Number, default: 0},
 views: {type: Number, default: 0},
}

我想使用聚合来按大小L过滤文档,并对喜欢和升序排序对价格执行降序排序。这是我正在使用的查询:

aggregate([{$match:{sizes:['L']}},{$sort:{price:1,likes:-1}}])

但我得到的结果只是通过$ sort对象中的第一个字段对文档进行排序,这就是价格而且它们没有按喜欢排序。所以有什么问题?我尝试了不同的领域和订单,每次都得到相同的结果。

node.js mongodb sorting mongoose
1个回答
0
投票

根据https://docs.mongodb.com/manual/reference/operator/aggregation/sort/的MongoDB文档

enter image description here

你使用的$ sort方法格式正确,你确定你想要排序的记录中有任何喜欢吗?还要检查您的MongoDB是否支持您正在使用的格式的版本。下面的示例几乎与您的相同,只是简化尺寸查询,当sizes数组只包含字符串时,您不需要设置[“L”]。

db.collection.aggregate([
    {
        "$match": {
            "sizes": "L"
        }
    },
    { 
        "$sort": {
            "price": 1,
            "likes": -1
        }
    }
])
© www.soinside.com 2019 - 2024. All rights reserved.