我如何在 mongoDB 中比较两个具有相同形式的 localField
How can i compare two localField with same form in mongoDB
我是 mongoBD 的新手。我使用 $lookup
加入了两个 table。我有两个模型 Posts
和 Savedpost
。我需要比较两个字段 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 集合中添加两个临时变量
- 在查找管道阶段根据临时变量匹配外部集合查找键。
示例中:
首先-->posts._id-->savedposts.postid
秒 --> posts.savedby-->savedposts.saved
我是 mongoBD 的新手。我使用 $lookup
加入了两个 table。我有两个模型 Posts
和 Savedpost
。我需要比较两个字段 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 集合中添加两个临时变量
- 在查找管道阶段根据临时变量匹配外部集合查找键。
示例中:
首先-->posts._id-->savedposts.postid
秒 --> posts.savedby-->savedposts.saved