我已经在很基本的功能上苦苦挣扎了很长时间,在网上找不到任何好的解决方案。
我的问题很简单。我的数据库中有这样的文档:
// document 1
{
_id: "0000000000001",
name: "document 1 name",
document2s: [ "0000000000002" ] // array of ids of document2s
}
// document 2
{
_id: "0000000000002",
name: "document 2 name",
document3s: [ "0000000000003" ] // array of ids of document3s
}
// document 3
{
_id: "0000000000003",
name: "document 3 name",
}
我想编写一个聚合以获取此结果:
{
_id: "0000000000001",
name: "document 1 name",
document2s: [
{
_id: "0000000000002",
name: "document 2 name",
document3s: [
{
_id: "0000000000003",
name: "document 3 name",
}
]
}
]
}
使用$ lookup进行聚合非常简单,但是结果却是平坦的(document2和document3在document1内处于同一级别)。我希望将对象嵌套在它们所属的位置。这很难。我设法将其拉到一个嵌套级别(使用$ group),但是对于两个嵌套级别(或更多个嵌套),我无法使其正常工作。
请注意,在每个级别上,文档ID都是数组。
任何帮助将不胜感激!