如何用Deno和MongoDB的聚合连接两个表?

问题描述 投票:0回答:1

现在,我正在学习Deno,并尝试用Deno和MongoDb做一个简单的应用。到目前为止,一切都很顺利。但是今天,我想用聚合函数连接两张表。我的示例代码在这里。

const result = await articles.aggregate([
    {
      $lookup: {
        from: "authors",
        localField: "oid",
        foreignField: "author_id",
        as: "author",
      },
    },
    {
      $unwind: "$author",
    },
  ]);
  req.send(result);

我想要一个像下面这样的输出。但是现在,虽然我的数据库中只有3篇文章,但它将这些作者和所有作者进行匹配,总共带来6条记录。

我的输出

我认为问题是由以下原因造成的。但我不确定。

// My output id format
"_id": {
      "$oid": "5ed7abfc00f94b9c0048ba5e"
},

// what will be written in the localfield field in this section
$lookup: {
        from: "authors",
        localField: "oid",
        foreignField: "author_id",
        as: "author",
},

我在等待您的帮助。

mongodb join aggregate deno
1个回答
0
投票

我还没有找到合适的解决方案,但我通过下面的方法解决了这个问题。

  var result = await articles.find();
  for(var i=0; i<result.length; i++){
    result[i].author = await authors.findOne({ _id: { $oid: result[i].author_id } });
  }
  req.send(result);

我的问题是由于ObjectId造成的。Deno还不支持这个功能。我相信他们很快就会解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.