node.js - 使用 AND 运算符对 mongoose 中的多列进行排序
问题描述
我有一个包含喜欢(计数)、分享(计数)和评论(数组)的视频集合,我想根据最大喜欢、分享和评论对所有视频进行排序。我该怎么做。这是我的架构:
var commentSchema = new Schema({
user: { type: Schema.Types.ObjectId, required: true, ref: 'User' },
message: { type: String, required: true },
like: { type: Number, default: 0 }
})
var videoSchema = new Schema({
title: { type: String, required: true },
video: { type: String, required: true },
like: { type: Number, default: 0 },
share: { type: Number, default: 0 },
comments: [commentSchema]
}, { timestamps: true });
var Video = mongoose.model('Video', videoSchema);
module.exports = Video;
解决方案
您可以通过使用sort
(在 Mongoose 中排序)函数来做到这一点,如下例所示:
Video
.find({})
.sort('-like -share -comments')
.exec((err, _videos) => { ... });
请注意,-
字段名称前的符号表示descending
,如果省略,它将ascending
对该列进行排序。
如果您在comments
排序时遇到一些问题,请添加createdAt
时间戳字段,然后使用.sort('-like -share -comments.createdAt')
.
推荐阅读
- http - 在颤振中使用http GET请求的问题
- python - Python中的CSV文件和URL循环列表
- sql-server - T-SQL:在分隔符的不一致实例之间拆分字符值
- apache-spark - Spark 作业 RPC 问题
- macos - 如何在 macOS 沙盒应用程序中使用插件中的 dylib?
- angular - 未使用 Laravel Sanctum 和 Angular 为跨域请求设置 CSRF Cookie
- powershell - PowerShell 脚本 - 如果不存在则创建组
- python - 如何在字符串中使用 re.sub 更改路径,保持与扩展名相同的文件名
- android - 设计每行多个文本视图的可滚动列表
- javascript - 通过循环将对象添加到数组中的正确方法