我有一个板集合、一个列表集合和一个卡片集合。列表数组嵌入在板文档中。我正在尝试获得如下所示的输出:
{
_id: 1,
title: "a board",
lists: [
{
_id: 1,
title: "a list",
cards: [ { _id: 1, title: "a card", list_id: 1 }, { _id: 2, title: "another card", list_id: 1 } ]
},
...
]
}
我想将卡片嵌套在它所属的列表中。卡片文档有一个list_id
字段。我试过这个:
db.boards.aggregate([
{ '$match' => { _id: 1 } },
{ '$lookup' => {
from: "cards",
localField: "lists._id",
foreignField: "list_id",
as: "cards"
} },
])
但这导致:
{
_id: 1,
title: "a board",
lists: [ { _id: 1, title: "a list" } ],
cards: [ { _id: 1, title: "a card", list_id: 1 }, { _id: 2, title: "another card", list_id: 1 } ]
}
我知道我必须使用$unwind
才能获得我想要的结果,但我无法让它发挥作用