주어진 값에 따라 재고 요소를 찾아야하는 다음 유형의 문서가 있습니다. 즉, 모든 재고를 반환합니다 ele = 5
.
{"item":"journal",
"instock":[
{ "warehouse":"A", "ele":[2,4,5] },
{ "warehouse":"C", "ele":[8,5,2] },
{ "warehouse":"F", "ele":[3] },
{ "warehouse":"K", "ele":[2,8,4] }
]
}
$ elemMatch를 사용하려고했지만 첫 번째 요소 만 생성합니다.
db.inventory.find({"item": "journal"}, {"_id": 0, "item": 0, "instock":{$elemMatch: {"ele": {$in: [5]}}} })
그러나 그것은 단지 제공합니다 :
{ "instock" : [
{ "warehouse" : "A", "ele" : [ 2, 4, 5 ] }
]}
그리고 기대는
{ "instock" : [
{ "warehouse" : "A", "ele" : [ 2, 4, 5 ] },
{ "warehouse" : "C", "ele" : [ 8, 5, 2 ] }
]}
예상 한 결과를 얻으려면 어떻게해야합니까?
$elemMatch
또는 instock.$
() 발견에의 투영 첫 경기 문서를 반환합니다,
MongoDB 4.4의 프로젝션에서 집계 표현식 을 사용할 수 있습니다. 예를 들어 프로젝션에서 배열 $ filter 연산자를 사용합니다.
db.collection.find({
"item": "journal"
},
{
instock: {
$filter: {
input: "$instock",
cond: { $in: [5, "$$this.ele"] }
}
}
})
이전 버전의 경우 aggregate()
위의 동일한 연산자를 사용 하여 사용할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다