我使用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对象中的第一个字段对文档进行排序,这就是价格而且它们没有按喜欢排序。所以有什么问题?我尝试了不同的领域和订单,每次都得到相同的结果。
根据https://docs.mongodb.com/manual/reference/operator/aggregation/sort/的MongoDB文档
你使用的$ sort方法格式正确,你确定你想要排序的记录中有任何喜欢吗?还要检查您的MongoDB是否支持您正在使用的格式的版本。下面的示例几乎与您的相同,只是简化尺寸查询,当sizes数组只包含字符串时,您不需要设置[“L”]。
db.collection.aggregate([
{
"$match": {
"sizes": "L"
}
},
{
"$sort": {
"price": 1,
"likes": -1
}
}
])