예. 아니오. 일치하는 사람이있는 모든. 서를 조회 할 수 있지만 모든 개인을 직접 u 리할 수는 없습니다. 즉, 하위 문서는 가상 컬렉션이 아니므로 항상 '상위'문서가 반환됩니다.
게시 한 예에는 이름을 필드 키로 사용하는 추가 복잡성이있어서 점 표기법을 사용할 수 없습니다.
일반적으로 비슷한 항목이 많으면 목록에 넣는 것이 가장 좋습니다.
db.collection.aggregate([
// only match documents that have a person w/ blue eyes (can use indexing)
{$match : { "ppl.eyecolor" : "blue" } },
// unwind the array of people
{$unwind : "$ppl" },
// match only those with blue eyes
{$match : { "ppl.eyecolor" : "blue" }},
// optional projection to make the result a list of people
{$project : { Name : "$ppl.Name", EyeColor: "$ppl.eyecolor" }} ]);
이것은 아주 나쁜 디자인
"result" : [
{
"_id" : 132,
"Name" : "John",
"EyeColor" : "blue"
},
{
"_id" : 12,
"Name" : "Jimmy",
"EyeColor" : "blue"
},
{
"_id" : 4312,
"Name" : "Jimmy",
"EyeColor" : "blue"
},
{
"_id" : 4312,
"Name" : "Marc",
"EyeColor" : "blue"
}
],
"ok" : 1
같은 결과를 제공합니다
그런 다음 통합 프레임 워크를 사용하여 조회 할 수 있습니다 –