정의
$objectToArray
문서를 배열로 변환합니다. 반환 배열에는 원본 문서의 각 필드/값 쌍에 대한 요소가 포함되어 있습니다. 반환 배열의 각 요소는 두 개의 필드
k
및v
를 포함하는 문서입니다.k
필드에는 원본 문서의 필드 이름이 포함됩니다.v
필드에는 원본 문서의 필드 값이 포함됩니다.
$objectToArray
의 구문은 다음과 같습니다:{ $objectToArray: <object> } <object>
표현식은 문서 객체로 해석되는 한 모든 유효한 표현식일 수 있습니다.$objectToArray
는 인수의 최상위 필드에 적용됩니다. 인수 자체가 내장된 문서 필드를 포함하는 문서인 경우$objectToArray
는 내장된 문서 필드에 재귀적으로 적용되지 않습니다.표현식에 대한 자세한 내용은 표현식 연산자를 참조하세요.
행동
표현식에 대한 자세한 내용은 표현식 연산자를 참조하세요.
예시 | 결과 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||||||||||||||||
|
|
예시
$objectToArray
예시
다음 문서가 포함된 inventory
collection을 생각해 보세요.
db.inventory.insertMany( [ { _id: 1, item: "ABC1", dimensions: { l: 25, w: 10, uom: "cm" } }, { _id: 2, item: "ABC2", dimensions: { l: 50, w: 25, uom: "cm" } }, { _id: 3, item: "XYZ1", dimensions: { l: 70, w: 75, uom: "cm" } } ] )
다음 집계 파이프라인 작업은 $objectToArray
를 사용하여 dimensions
필드를 배열로 반환합니다.
db.inventory.aggregate( [ { $project: { item: 1, dimensions: { $objectToArray: "$dimensions" } } } ] )
이 연산은 다음을 반환합니다:
{ _id: 1, item: "ABC1", dimensions: [ { "k" : "l", "v" : 25 }, { "k" : "w", "v" : 10 }, { "k" : "uom", "v" : "cm" } ] } { _id: 2, item: "ABC2", dimensions: [ { "k" : "l", "v" : 50 }, { "k" : "w", "v" : 25 }, { "k" : "uom", "v" : "cm" } ] } { _id: 3, item: "XYZ1", dimensions: [ { "k" : "l", "v" : 70 }, { "k" : "w", "v" : 75 }, { "k" : "uom", "v" : "cm" } ] }
$objectToArray
중첩된 필드를 합산하려면
다음 문서가 포함된 inventory
collection을 생각해 보세요.
db.inventory.insertMany( [ { _id: 1, item: "ABC1", instock: { warehouse1: 2500, warehouse2: 500 } } { _id: 2, item: "ABC2", instock: { warehouse2: 500, warehouse3: 200} } ] )
다음 집계 파이프라인 작업에서는 $objectToArray
와 함께 $unwind
및 $group
을 사용하여 창고별 총 재고 품목을 계산합니다.
db.inventory.aggregate([ { $project: { warehouses: { $objectToArray: "$instock" } } }, { $unwind: "$warehouses" }, { $group: { _id: "$warehouses.k", total: { $sum: "$warehouses.v" } } } ])
이 연산은 다음을 반환합니다:
{ _id: "warehouse3", total: 200 } { _id: "warehouse2", total: 1000 } { _id: "warehouse1", total: 2500 }
$objectToArray
+ $arrayToObject
예시
다음 문서가 포함된 inventory
collection을 생각해 보세요.
db.inventory.insertMany( [ { _id: 1, item: "ABC1", instock: { warehouse1: 2500, warehouse2: 500 } }, { _id: 2, item: "ABC2", instock: { warehouse2: 500, warehouse3: 200}, } ] )
다음 집계 파이프라인 작업은 각 항목의 총 재고를 계산하여 instock
문서에 추가합니다.
db.inventory.aggregate( [ { $addFields: { instock: { $objectToArray: "$instock" } } }, { $addFields: { instock: { $concatArrays: [ "$instock", [ { "k": "total", "v": { $sum: "$instock.v" } } ] ] } } } , { $addFields: { instock: { $arrayToObject: "$instock" } } } ] )
이 연산은 다음을 반환합니다:
{ _id: 1, item: "ABC1", instock: { warehouse1: 2500, warehouse2: 500, total: 3000 } } { _id: 2, item: "ABC2", instock: { warehouse2: 500, warehouse3: 200, total: 700 } }