我是mongoBD的新手。我已经使用$lookup
联接了两个表。我有两个模型CCD_ 2和CCD_。我需要比较两个字段postId
和savedBy
,我检查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
进行比较,但我需要比较字段postId
和savedBy
,这是可能的,如何进行?
谢谢
以下是如何基于两个字段$lookup:
db.posts.aggregate([
{
$lookup: {
from: "savedposts",
let: {
first: "$_id",
second: "$savedby"
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$postid",
"$$first"
]
},
{
$eq: [
"$saved",
"$$second"
]
}
]
}
}
}
],
as: "result"
}
}
])
解释:
- 通过let从post集合添加两个临时变量
- 在查找管道阶段中,基于临时变量与外部集合查找键进行匹配
在示例中:
首先->职位_id-->savedposts.posted
第二-->posts.savedby->savedposts.saved
操场