现在,我正在学习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",
},
我在等待您的帮助。
我还没有找到合适的解决方案,但我通过下面的方法解决了这个问题。
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还不支持这个功能。我相信他们很快就会解决这个问题。