如何比较mongoDB中两个相同形式的localField



我是mongoBD的新手。我已经使用$lookup联接了两个表。我有两个模型CCD_ 2和CCD_。我需要比较两个字段postIdsavedBy,我检查mongoDb文档进行查找,并尝试

Posts.aggregate([{
$lookup: {
from: Savedpost.collection.name, // collection name in db
localField: "_id", // Post id from Post collection
foreignField: "postId", // postId from Savedpost collection
as: "isSaved"
},
}]).exec(function(err, students) {
res.send(students)
});

这里我只与postId进行比较,但我需要比较字段postIdsavedBy,这是可能的,如何进行?

谢谢

以下是如何基于两个字段$lookup:

db.posts.aggregate([
{
$lookup: {
from: "savedposts",
let: {
first: "$_id",
second: "$savedby"
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$postid",
"$$first"
]
},
{
$eq: [
"$saved",
"$$second"
]
}
]
}
}
}
],
as: "result"
}
}
])

解释:

  1. 通过let从post集合添加两个临时变量
  2. 在查找管道阶段中,基于临时变量与外部集合查找键进行匹配

在示例中:

首先->职位_id-->savedposts.posted

第二-->posts.savedby->savedposts.saved

操场

最新更新