구조는 다소 비슷합니다. children
배열이 비어 있지 않은 경우
[
{id: 1, name: "alex" , children: [2, 4, 5]},
{id: 2, name: "felix", children: []},
{id: 3, name: "kelly", children: []},
{id: 4, name: "hannah", children: []},
{id: 5, name: "sonny", children: [6]},
{id: 6, name: "vincenzo", children: []}
]
나는 이름 children
아이디의를 교체합니다.
따라서 쿼리 결과는 다음과 같습니다.
[ {id: 1, name: "alex" , children: ["felix", "hannah" , "sonny"]}
{id: 5, name: "sonny", children: ["vincenzo"]}
]
나는 이것을 달성하기 위해 무엇을 했는가?
db.list.aggregate([
{$lookup: { from: "list", localField: "id", foreignField: "children", as: "children" }},
{$project: {"_id" : 0, "name" : 1, "children.name" : 1}},
])
내가
{ "name" : "alex", "parent" : [ ] }
{ "name" : "felix", "parent" : [ { "name" : "alex" } ] }
{ "name" : "kelly", "parent" : [ ] }
{ "name" : "hannah", "parent" : [ { "name" : "alex" } ] }
{ "name" : "sonny", "parent" : [ { "name" : "alex" } ] }
{ "name" : "vincenzo", "parent" : [ { "name" : "sonny" } ] }
내가 무엇을 잘못 이해 않았다 :) 원하는 것이 아니다 부모와
채워진 어린이?
답장을 보내 주셔서 감사합니다. 나는 localfield와 foreignField에 대한 나의 실수를 이해했다. 그러나 쿼리에서'$ group'을 설명 할 수 있습니까? – mmu36478
'$ unwind' 때문에 * children * 배열은 각 children *에 대해 별도의 문서로 만들고 다시 children *의 배열을 만들기 위해'$ group'을 사용해야합니다. –
각 집계 방법 후에 현재 상태를 보여준 것처럼 - 따라하기 훨씬 쉬워집니다. +1 –