如何查询以获取用户使用 mongoose 发布的帖子数?
How do I query to fetch number of Posts made by a User using mongoose?
所以我正在尝试获取特定用户完成的 post 的总数。
型号
Post.ts(在 post 模型中我有用户参考)
user: {
type: Schema.Types.ObjectId,
ref: "User",
required: [true, "Please provide user ID."],
},
我试过了
const posts = await Post.find({ user: req.user._id});
const postCount = posts.length;
但我想聚合用户,这样我就可以 获取用户数据以及 post 计数 。
我试过的是下面,但我得到 0 个 posts.
const user = await User.aggregate([
{
$lookup: {
from: "post",
let: { userId: "$_id" },
pipeline: [{ $match: { $expr: { $eq: ["$$userId", "$userId"] } } }],
as: "posts_count",
},
},
{ $addFields: { posts_count: { $size: "$posts_count" } } },
]);
我搜索了但没有找到任何相关答案。
您可以按如下方式稍微更改查询。从 post
模型中,我看到为用户集合引用的字段是 user
。总的来说,你已经使用了 $userId
.
const user = await User.aggregate([
{
$lookup: {
from: "post",
let: { userId: "$_id" },
pipeline: [{ $match: { $expr: { $eq: ["$$userId", "$user"] } } }],
as: "posts_count",
},
},
{ $addFields: { posts_count: { $size: "$posts_count" } } },
]);
如果这有帮助,请告诉我。谢谢
所以我正在尝试获取特定用户完成的 post 的总数。
型号
Post.ts(在 post 模型中我有用户参考)
user: {
type: Schema.Types.ObjectId,
ref: "User",
required: [true, "Please provide user ID."],
},
我试过了
const posts = await Post.find({ user: req.user._id});
const postCount = posts.length;
但我想聚合用户,这样我就可以 获取用户数据以及 post 计数 。 我试过的是下面,但我得到 0 个 posts.
const user = await User.aggregate([
{
$lookup: {
from: "post",
let: { userId: "$_id" },
pipeline: [{ $match: { $expr: { $eq: ["$$userId", "$userId"] } } }],
as: "posts_count",
},
},
{ $addFields: { posts_count: { $size: "$posts_count" } } },
]);
我搜索了但没有找到任何相关答案。
您可以按如下方式稍微更改查询。从 post
模型中,我看到为用户集合引用的字段是 user
。总的来说,你已经使用了 $userId
.
const user = await User.aggregate([
{
$lookup: {
from: "post",
let: { userId: "$_id" },
pipeline: [{ $match: { $expr: { $eq: ["$$userId", "$user"] } } }],
as: "posts_count",
},
},
{ $addFields: { posts_count: { $size: "$posts_count" } } },
]);
如果这有帮助,请告诉我。谢谢