我如何在 mongoDB 中比较两个具有相同形式的 localField

How can i compare two localField with same form in mongoDB

我是 mongoBD 的新手。我使用 $lookup 加入了两个 table。我有两个模型 PostsSavedpost。我需要比较两个字段 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
  2. 从 post 集合中添加两个临时变量
  3. 在查找管道阶段根据临时变量匹配外部集合查找键。

示例中:

首先-->posts._id-->savedposts.postid

秒 --> posts.savedby-->savedposts.saved

playground