我在nodejs上使用本机mongodb驱动程序,我希望能够运行单个查询并从另一个集合中检索所有文档。
我有一个tags
集合:id_
,tag
,在我的文章集上,我有tags
这是一个ObjectId数组
现在,当我检索到正确的文档时,我希望tags
在tag
集合上保留tags
值。
我无法绕过那个,我一直都是 尝试这个但它只检索第一个标签:
db.orders.aggregate([
{
$unwind: "$tags"
},
{
$lookup:
{
from: "tags",
localField: "tags",
foreignField: "_id",
as: "tags_found"
}
},
{
$match: { "tags_found": { $ne: [] } }
}
])
有没有办法一次检索所有标签?如果没有,那么在不使用Mongoose而是使用本机驱动程序的情况下,最好的方法是什么?
答案 0 :(得分:0)
通过查看另一个问题,我几乎设法获得了我想要的东西,谢谢@chridam
不幸的是,它找不到没有标签的文章。有没有办法做到这一点?
db.getCollection('articles').aggregate([
{
$unwind: "$tags"
},
{
$lookup:
{
from: "tags",
localField: "tags",
foreignField: "_id",
as: "tags_found"
}
},
{
$unwind: "$tags_found"
},
{ "$group": {
"_id": "$_id",
"tags": { "$push": "$tags" },
"tags_found": { "$push": "$tags_found" }
}},
{
$match: { "tags_found": { $ne: [] } }
}
])