1
MongoDB에 일부 트리 구조 데이터를 저장하고 있습니다.MongoDB에서 트리의 일부를 선택하십시오.
{
"_id": 1,
"name": "foo",
"subs": [{
"name": "bar",
"subs": [{
"name": "baz"
},
{
"name": "gizmo"
}]
}]
}
{
"_id": 2,
"name": "foo",
"subs": [{
"name": "bar",
"subs": [{
"name": "gizmo"
}]
}]
}
내가 하위 트리에 조회 할, 쿼리와 일치하는 트리의 일부를 추출하는 유일한 소원 : 그것은 다음과 같이 보입니다. 각 노드에는 쿼리와 일치하는 하위 트리가 하나만 있습니다.
이 테스트 쿼리에서 "foo/bar/gizmo"경로와 일치하는 트리 부분을 찾고 싶습니다.
db.Test.find({
name: "foo",
subs: {
$elemMatch: {
name: "bar",
subs: {
$elemMatch: {
name: "gizmo"
}
}
}
}
},
{
"subs.subs": {
$slice: 1
}
})
실제로
{
"_id": 1,
"name": "foo",
"subs": [{
"name": "bar",
"subs": [{
"name": "gizmo"
}]
}]
}{
"_id": 2,
"name": "foo",
"subs": [{
"name": "bar",
"subs": [{
"name": "gizmo"
}]
}]
}
는이 작업을 수행하는 것이 가능 원한 반면 나는
{
"_id": 1,
"name": "foo",
"subs": [{
"name": "bar",
"subs": [{
"name": "baz"
}]
}]
}{
"_id": 2,
"name": "foo",
"subs": [{
"name": "bar",
"subs": [{
"name": "gizmo"
}]
}]
}
입니다 얻을 결과 : 그래서, 나는 다음과 같은 시도? 하위 트리에 $elemMatch
투영 연산자를 사용하려했지만 Mongo에서 현재 지원하지 않는 것 같습니다 (현재 지원되지 않는 중첩 필드에서 $ elemMatch 프로젝션을 사용할 수 없음).
배열은 MongoDB의에서 많은 사랑을 부여하지 않습니다. 문서를 재구성해야합니다. – WiredPrairie