내 컬렉션에 다음과 같은 문서가 있다고 가정합니다.
{
"_id":ObjectId("562e7c594c12942f08fe4192"),
"shapes":[
{
"shape":"square",
"color":"blue"
},
{
"shape":"circle",
"color":"red"
}
]
},
{
"_id":ObjectId("562e7c594c12942f08fe4193"),
"shapes":[
{
"shape":"square",
"color":"black"
},
{
"shape":"circle",
"color":"green"
}
]
}
쿼리를 수행하십시오.
db.test.find({"shapes.color": "red"}, {"shapes.color": 1})
또는
db.test.find({shapes: {"$elemMatch": {color: "red"}}}, {"shapes.color": 1})
일치하는 문서 (문서 1)를 반환 하지만 항상 모든 배열 항목을 포함합니다 shapes
.
{ "shapes":
[
{"shape": "square", "color": "blue"},
{"shape": "circle", "color": "red"}
]
}
그러나 다음 을 포함하는 배열로만 문서 (문서 1) 를 얻고 싶습니다 color=red
.
{ "shapes":
[
{"shape": "circle", "color": "red"}
]
}
어떻게해야합니까?