node.js - 如何在 mongoDB 中获取按受欢迎程度(大多数用户最喜欢的)排序的电影列表?
问题描述
我有以下电影 api 项目的架构。
var MovieSchema = new Schema({
title: {
type: String,
required: true
},
description: {
type: String
},
genre: {
type: String
},
release_date: {
type: Date,
required: true
}
});
const userSchema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true, minlength: 6 },
favourite_movies: [{
type: Schema.Types.ObjectId,
ref: "Movie"
}]
});
请注意,由于项目的其他功能限制,架构很难更改。
如何获取此模式的所有电影按受欢迎程度(大多数用户最喜欢)排序的列表?
解决方案
您可以为此使用聚合管道。可以尝试类似的东西
MovieModel.aggregate(
[
{
$lookup: {
from: "users", // user collection name
localField: "_id",
foreignField: "favourite_movies",
as: "user",
},
},
{
$addFields: {
count: { $size: "$user" },
},
},
{
$sort: { count: -1 },
},
{
$unset: ["user", "count"],
},
],
(err, data) => {
if (err) console.log(err);
else console.log(data);
}
);
推荐阅读
- datatable - 如何遍历jquery数据表中的隐藏列
- php - laravel 块(帮助)
- c# - TextBox 中的输入验证
- python - 设置 Jupyter 远程服务器,SSH 连接到 localhost 端口 - 如何在我的 IDE 中打开 localhost ipynb 文件
- c# - 使用 SSLStream 连接到 Kafka
- tensorflow - 从 deeplab 模型中获取输出的 Logits
- android - 为什么从onCLick onBindViewHolder修改RecyclerView List的值会发生变化?
- sql-server - SQL Server中使用like查询100%关键字
- heroku - 如何使用 ScrapingHub.com API 将数据发布到 Heroku 数据库?
- javascript - 哪种机制用于触发从 jsp 到使用 href 的 servlet 的调用