Mongodb-如果是引用的注释,则从注释文本中获取值
我有一个mongo db评论集。如果一条评论被引用到另一条评论,我将更新被引用的评论的id 我有以下查询,如我创建的mongodb游乐场(下面的链接)中所示。在该示例中,comment333的引用字段值为1,这意味着它被引用到comment111 如果被引用,如何修改查询以包含被引用注释的“文本” 我要查找的结果是附加值Mongodb-如果是引用的注释,则从注释文本中获取值,mongodb,Mongodb,我有一个mongo db评论集。如果一条评论被引用到另一条评论,我将更新被引用的评论的id 我有以下查询,如我创建的mongodb游乐场(下面的链接)中所示。在该示例中,comment333的引用字段值为1,这意味着它被引用到comment111 如果被引用,如何修改查询以包含被引用注释的“文本” 我要查找的结果是附加值“quotedText”:“content 111” 您只需为注释添加$lookup $match用键引用 $limit如果此id有多条注释,我不确定您是否可以管理 $pro
“quotedText”:“content 111”
您只需为
注释添加$lookup
$match
用键引用
$limit
如果此id有多条注释,我不确定您是否可以管理
$project
必填字段
$unwind
quotedText
因为它是一个数组,我们只需要text
字段值
preserveNullAndEmptyArrays
因为有可能quoted
将为null,这将忽略空值
- 现在我们在
quotedText
$addFields
用于将quotedText
替换为text
游乐场:你使用某种查询生成器还是逐行编写?不,我没有使用任何查询生成器,只是逐行编写,大部分使用mongodb参考站点,如果你知道语法,那么就不需要任何查询生成器。
{
commentedBy: "userfooid",
"key": 1,
"text": "content 111",
"quoted": null,
},
{
commentedBy: "userfooid",
"key": 2,
"text": "content 222",
"quoted": null,
},
{
commentedBy: "userf333",
"key": 3,
"text": "content 333",
"quoted": 1,
{
"_id": ObjectId("5a934e000102030405000002"),
"commentedBy": "userf333",
"key": 3,
"quoted": 1,
"text": "content 333"
"quotedText": "content 111"
}
{
$lookup: {
from: "comments",
let: { quoted: "$quoted" },
pipeline: [
{
$match: {
$expr: { $eq: ["$$quoted", "$key"] }
}
},
{ $limit: 1 },
{
$project: { _id: 0, text: 1 }
}
],
as: "quotedText"
}
},
{
$unwind: {
path: "$quotedText",
preserveNullAndEmptyArrays: true
}
},
{
$addFields: {
quotedText: "$quotedText.text"
}
}