Node.js nodejs中两个字段的mongodb排序
我正在使用mongodb和mongoose开发应用程序。我有一个名为product的集合,该集合具有以下字段: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:
{
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()的默认行为
是按您提供的第一个字段排序,当两个要匹配的文档的第一个字段相等时,使用第二个字段进行排序,即如果它们的价格相同,文档将仅按类进行排序。那么如何按两个字段或两个以上字段对文档进行排序。是否有插件或方法?