Node.js nodejs中两个字段的mongodb排序

Node.js nodejs中两个字段的mongodb排序,node.js,mongodb,sorting,mongoose,Node.js,Mongodb,Sorting,Mongoose,我正在使用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:

我正在使用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对象中的第一个字段对文档进行排序,这是价格,而不是按喜欢排序。
那有什么问题?我尝试了不同的字段和顺序,每次都得到了相同的结果。

根据MongoDB docs在

您使用的$sort方法具有正确的格式,您确定要排序的记录中有类似的内容吗?还要检查MongoDB的版本是否支持您正在使用的格式。下面的示例与您的示例几乎相同,只是简化了大小查询,当sizes数组只包含字符串时,您不需要生成[“L”]

db.collection.aggregate([
    {
        "$match": {
            "sizes": "L"
        }
    },
    { 
        "$sort": {
            "price": 1,
            "likes": -1
        }
    }
])

您能否将样本发布到数据以支持您的索赔。
sort()的默认行为
是按您提供的第一个字段排序,当两个要匹配的文档的第一个字段相等时,使用第二个字段进行排序,即如果它们的
价格相同,文档将仅按
类进行排序。那么如何按两个字段或两个以上字段对文档进行排序。是否有插件或方法?