【发布时间】:2017-03-03 18:22:19
【问题描述】:
我正在使用 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 对象中的第一个字段对文档进行排序,即价格,它们不是按喜欢排序的。 所以有什么问题?我尝试了不同的字段和顺序,每次都得到相同的结果。
【问题讨论】:
-
您能否将样本发布到数据中以支持您的主张。
sort()的默认行为是按您提供的第一个字段进行排序,并在要匹配的 2 个文档的第一个字段相等时使用第二个字段进行排序,即文档将仅按likes排序,如果他们的@ 987654325@也一样。 -
那么如何按两个字段对文档进行排序?或两个以上字段。是否有任何插件或方法?
标签: node.js mongodb sorting mongoose