【发布时间】:2021-10-03 07:04:10
【问题描述】:
我的user 文档如下所示,
{
"_id": ObjectId("61408128f3c4b105c21c6e60"),
"business_idea" : [
{
"business_tags" : [
ObjectId("61408128f3c4b105c21c6e60")
],
"isDefault" : true,
"isDeleted" : false,
"likedByList" : [
ObjectId("615829aa55f3cc0a8c180a2b"), // _id Foreign key for likes
ObjectId("615829aa55f3cc0a8c180a2c")
],
"_id" : ObjectId("61556463aad46252d621b30d"),
"business_id" : "61556463aad46252d621b30b",
"business_name" : "ST Business",
"business_name_to_lower" : "st business",
"business_type" : "limited liability company",
"business_desc" : "test brief description",
"business_logo" : "https://neur-dev.s3.ap-south-1.amazonaws.com/logo/jainx%20logo1632986208841.png"
}
]
}
likes 文档看起来像这样,
{
"_id" : ObjectId("615829aa55f3cc0a8c180a2b"),
"likedFlag" : true,
"isDeleted" : false,
"likeLocation" : "idea",
"targetId" : ObjectId("61556463aad46252d621b30c"),
"createdBy" : ObjectId("61456816b1f55166ab50d023"),
"ideaId" : "61556463aad46252d621b30d",
"createdAt" : ISODate("2021-10-02T15:13:06.255+05:30"),
"updatedAt" : ISODate("2021-10-02T15:13:06.255+05:30"),
"__v" : 0
}
现在我的问题是,我只想填充用户喜欢的对象,其中likes.createdBy 等于前端提供的_id。
我正在使用以下查询,它返回给我所有与_id 匹配的喜欢的文档,
请在下面找到查询,
db.users.aggregate([
{
$lookup: {
from: "universities",
localField: "university",
foreignField: "_id",
as: "university",
},
},
{ $lookup: {
from: "likes",
localField: "business_idea.likedByList",
foreignField: "_id",
as: "liked"
} },
{ $match: { "business_idea.isDeleted": false } },
{ $project: { ideaList: "$business_idea", university: "$university.type", likeditem: "$liked" } },
{ $unwind: "$ideaList" }
])
请帮助我仅填充此createdBy 字段与提供的_id 匹配的喜欢的文档。
请帮我解决这个问题。谢谢。
【问题讨论】: