아래 문서가 포함 된 컬렉션이 있습니다.
{ item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
{ item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
{ item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
{ item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
출력을 원하는
{ "_id" : "A", totalQty : 105 }
{ "_id" : "B", totalQty :35 }
{ "_id" : "C", totalQty : 55 }
하려고 :
db.inventory.aggregate([
{$group : {_id: "$instock.warehouse", totalQty : {$sum: "$instock.qty"}}}
])
하지만 작동하지 않습니다. instock
필드 가없는 항목이있을 수 있습니다 .
그리고 ' instock
' 의 각 요소를 새 컬렉션 ( ' inventoryNew
') 에서 별도의 문서로 원하면 어떨까요 ?
컬렉션은 https://docs.mongodb.com/manual/tutorial/query-array-of-documents/ 에서 가져옵니다.
당신은 올바른 길을 가고 있습니다 $ unwind before를 instock
사용 하여 배열 을 분해해야합니다 .$group
$unwind
해체하다$group
하여 instock.warehouse
다음 합계 instock.qty
이미했다는 것을db.collection.aggregate([
{ $unwind: "$instock" },
{
$group: {
_id: "$instock.warehouse",
totalQty: { $sum: "$instock.qty" }
}
}
])
플레이 그라운드 : https://mongoplayground.net/p/WIHu4KaEq3l
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다