所以我試圖獲取特定用戶完成的帖子總數。
楷模
Post.ts(在帖子模型中我有用戶參考)
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;
但我想聚合用戶,以便我可以獲取用戶資料以及帖子計數。我嘗試過的內容如下,但我收到的帖子數量為 0。
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" } } },
]);
我搜索但找不到任何相關的答案。
uj5u.com熱心網友回復:
您可以按如下方式稍微更改查詢。從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" } } },
]);
讓我知道這是否有幫助。謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/429511.html
下一篇:查詢mongodb的嵌套物件
