gpt4 book ai didi

javascript - 单链查询 mongodb/mongoose 以获取所有评论

转载 作者:行者123 更新时间:2023-12-03 07:07:46 25 4
gpt4 key购买 nike

我正在尝试开发一个个人项目,一个以类似于 Stack Exchange 的方式运行的网站,用户可以提出一个可以收到多个答案的问题。每个问题和答案都可以有多个评论。

我的后端使用 nodeJS。

如何在单个 mongoDB/mongoose 查询中获取特定问题的所有评论的所有答案?

如果您能告诉我如何获取针对特定问题的所有答案的所有评论以及 所有单个 mongoDB/mongoose 查询中问题的评论?

Mongoose 模式:

const questionSchema = new mongoose.Schema({
title: String,
content: String
})

const answerSchema = new mongoose.Schema({
questionId: String,
content: String,
})

const commentSchema = new mongoose.Schema({
idQuestion: String, // nullable
idAnswer: String, // nullable
content: String
})

目前,我正在执行 Mongoose 查询以查找特定问题的所有答案。然后,使用 forEach,对每个答案执行 mongoose 查询以查找每个答案的所有评论。我认为这是非常费力的,性能明智的,不是实现我想要实现的目标的理想方式。

最佳答案

您可以尝试以下聚合。匹配问题 ID,然后加入以查找所有具有问题 ID 的答案 ID,然后查找以提取所有评论。

db.questions.aggregate([
{"$match":{"_id":input_question_id}},
{"$lookup":{
"from":"answers",
"localField":"_id",
"foreignField":"questionId",
"as":"answers"
}},
{"$lookup":{
"from":"comments",
"let":{"ids":{"answers_id":"$answers._id","question_id":"$_id"}},
"pipeline":[
{"$match":{"$expr":{
"$or":[
{"$eq":["$idQuestion","$$ids.question_id"]},
{"$in":["$idAnswer","$$ids.answers_id"]}
]
}}}
],
"as":"comments"
}},
{"$project":{"comments":"$comments.content"}}
])

这里的工作示例 - https://mongoplayground.net/p/qBlKqk-JsxA

关于javascript - 单链查询 mongodb/mongoose 以获取所有评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64407066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com