동일한 유형의 자식 인스턴스가 0 개 이상있는 트리의 노드로 작동하는 테스트 개체가 있습니다. 나는 그것을 MongoDB에서 유지하고 Morphia로 질의합니다. 끝내뿐만 아니라, 조금 놀라운MongoDB/Morphia - 재귀 객체에서 투영이 작동하지 않습니까?
{ "_id" : NumberLong(1) }
{ "_id" : NumberLong(2) }
{ "_id" : NumberLong(3) }
{ "_id" : NumberLong(4) }
{
"_id" : NumberLong(5),
"childrenTestObjects" : [
{
"stringValue" : "6eb887126d24e8f1cd8ad5033482c781",
"creationDate" : ISODate("1997-05-24T00:00:00Z")
"childrenTestObjects" : [
{
"stringValue" : "2ab8f86410b4f3bdcc747699295eb5a4",
"creationDate" : ISODate("2024-10-10T00:00:00Z"),
"_id" : NumberLong(7)
}
],
"_id" : NumberLong(6)
}
]
}
: 결과
db.TestObject.find({}, { _id: 1, childrenTestObjects: 1 }).limit(6).sort({_id: 1 }).pretty();
:
나는 다음 쿼리를 수행합니다. 결과와 관련하여 두 가지 문제가 있습니다.
1) 투영을 수행 할 때 상위 요소에만 적용됩니다. 자식 요소는 여전히 투영되지 않은 다른 속성 (stringValue 및 creationDate)을 반환합니다. 필드 선택을 동일한 유형의 모든 문서 및 하위 문서에 적용하고 싶습니다. 이 트리에는 하위 항목 수가 너무 많아서 쿼리에서 명시 적으로 지정할 수 없습니다. 그것을 성취하는 방법?
2) 놀랍게도 제한이 하위 문서에 적용되었습니다. 당신은 ID가 6 인 임베디드 문서가 하나 있다는 것을 알았습니다. N 개의 하위 문서가있는 최상위 문서 6 개를 볼 것으로 예상되었지만 대신에 5 개만 있습니다. MongoDB에 임베드 된 것에 상관없이 6 개의 최상위 요소를 반환하는 방법 ? 일관된 페이지 매김 시스템이 없다면 불가능합니다.
당신의 모든 도움이 MongoDB 방법을 더 빨리 배우고 정말 고맙습니다! 감사!
진행 상황을 광범위하게 검색 한 후 테스트 데이터에 문제가 있다는 것을 깨달았습니다. 그래서 # 2는 유효한 관심사가 아닙니다. 예상대로 작동합니다. 감사!! –