我有一个查询,该查询在Video Model中找到,该查询获取视图,但是我需要根据userId来获取这些视图,例如userId =“ 1xxxxxxxxx13”, 有可能吗?
Video.aggregate(
[
{
$group: {
_id: null,
totalViews: {
$sum: {
$cond: [{ $eq: ["$userId", id] }, "$views", 0],
},
},
},
},
],
function (err, data) {
console.log(data);
return data;
}
);
quer,给我零个视图,但是有一些视图有来自userId的视频的视图 这是架构
const mongoose = require("mongoose");
const videoSchema = new mongoose.Schema({
....
thumbnail: { type: String, required: false },
title: { type: String, required: false },
userId: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
views: { type: Number },
....
});
videoSchema.index({ title: "text" });
module.exports = mongoose.model("Video", videoSchema);
我需要过滤特定用户的视频
答案 0 :(得分:0)
看起来您正在计算每个用户的观看次数。
您可以执行以下操作。按用户ID分组并统计视图。它返回用户明智的viewCounts
[
{
$group: {
_id: $userId,
totalViews: {
$sum: "$views",
}
}
}
]
如果要明智地过滤用户,可以将{ $match : { "userId" : id}}
添加为聚合中的第一个管道。