이 mongoDB 쿼리에 대한 설명을 제공해주십시오.
db.inventory.find({ qty : { $all : [ { $elemMatch : { size: "M", num : { $gt : 40},color : "green" }} ,{ $elemMatch : { num :100 , color : "green"}} ]}}).pretty()
이 mongoDB 쿼리에 대한 설명을 제공해주십시오.
db.inventory.find({ qty : { $all : [ { $elemMatch : { size: "M", num : { $gt : 40},color : "green" }} ,{ $elemMatch : { num :100 , color : "green"}} ]}}).pretty()
좋아, 그래서 우리는 다음과 같은 문서가 상상 : 여기
/* 1 */
{
"_id" : ObjectId("5a148f114d8a2fe38bec772a"),
"samplearray" : [
{
"size" : "M",
"num" : 45,
"color" : "black"
},
{
"size" : "L",
"num" : 75,
"color" : "blue"
}
]
}
을 samplearray
두 개의 항목
db.sample.find({ samplearray: { $elemMatch: { num: { $gt: 41 }}}})
겠습니까 연구를 문서를 반송하십시오. 그것은 아무것도 반환하지 말아야
db.sample.find({ samplearray: { $elemMatch: { num: { $gte: 50 }, color: "black"}}})
: 우리는이 쿼리를 할 경우 num
지금보다 41
입니다 쿼리에서 우리는 배열 값 항목을 부탁드립니다. $elemMatch
은 각 개별 배열 값 항목을 조사하기 때문에. 이제는 문서가 일치하지 않습니다. 단일 배열에는 두 조건을 모두 만족하는 배열 값 항목이 없기 때문에 (:
{
"size" : "L",
"num" : 75,
"color" : "blue"
}
예)
및 color: "black"
하나 (예 :
{
"size" : "M",
"num" : 45,
"color" : "black"
}
) 있지만 두 하나의 문서에서 우리는 배열 num: { $gte: 50 }
을 충족 항목이 있습니다. 우리가 소개하는 곳 여기
우리가 결과 문서를 얻기 위해 원하는 경우, 우리는 우리의 쿼리를 다시 작성해야하고는 $all
:
db.sample.find({
samplearray: {
$all: [{
$elemMatch: {
num: {
$gte: 50
}
}
},
{
$elemMatch: {
color: "black"
}
}
]
}
})
지금 $all
및 $elemMatch
조금 이해합니까 약간 나아?
더 많은 설명 주셔서 감사합니다! –
두 쿼리 연산자에 대한 설명서가 우수합니다. https://docs.mongodb.com/manual/reference/operator/query/all/ 및 https://docs.mongodb.com/manual/reference/operator/query/elemMatch/ –
하지만이 쿼리는 $ all에 지정된 조건. 내가 이해하는 것은 모든 조건을 모두 만족하는 문서를 모으는 것이다. 내가 틀렸다면 나를 바로 잡아라. 더 명확히하기 위해 출력을 추가 할 수 있습니다. @AlexP. –
명확화는 항상 좋은 것입니다 –