mongodb의 Data join은 lookup!!
2023. 3. 10. 08:02ㆍmongodb
반응형
1. mongodb에서 lookup 은 join
MongoDB에서 $lookup은 Aggregation Pipeline의 stage 중 하나로, 다른 collection에서 데이터를 가져와서 Join을 수행할 수 있는 기능을 제공합니다. 이를 사용하여 RDBMS의 Join 기능과 유사한 기능을 구현할 수 있습니다.
2.lookup 문법
{ $lookup: {
from: <collection to join>,
localField: <field from the input documents>,
foreignField: <field from the documents of the "from" collection>,
as: <output array field>
}}
위의 구문에서 사용되는 각각의 파라미터는 다음과 같습니다.
- from: Join할 collection의 이름을 지정합니다.
- localField: 현재 collection의 Document에서 Join할 field의 이름을 지정합니다.
- foreignField: Join할 collection의 Document에서 Join할 field의 이름을 지정합니다.
- as: Join 결과를 저장할 배열 필드의 이름을 지정합니다.
3. 예제
- orders Collection
db.orders.insertMany(
[
{
"_id": ObjectId("602f425e4f8c14e7f5b15071"),
"order_date": ISODate("2022-02-19T07:00:00Z"),
"customer_id": ObjectId("602f425e4f8c14e7f5b15070"),
"product_id": ObjectId("602f425e4f8c14e7f5b1506f")
},
{
"_id": ObjectId("602f429f4f8c14e7f5b15073"),
"order_date": ISODate("2022-02-20T07:00:00Z"),
"customer_id": ObjectId("602f425e4f8c14e7f5b15070"),
"product_id": ObjectId("602f425e4f8c14e7f5b1506e")
}
]
)
- customers Collection
db.customers.insertMany
(
[
{
"_id": ObjectId("602f425e4f8c14e7f5b15070"),
"name": "Alice",
"age": 25
},
{
"_id": ObjectId("602f42d54f8c14e7f5b15075"),
"name": "Bob",
"age": 30
}
]
)
- products Collection
db.products.insertMnay(
[
{
"_id": ObjectId("602f425e4f8c14e7f5b1506e"),
"name": "Product A",
"price": 10
},
{
"_id": ObjectId("602f425e4f8c14e7f5b1506f"),
"name": "Product B",
"price": 20
}
]
)
위 예제 데이터는 orders, customers, products collection으로 구성되어 있습니다. orders collection의 Document는 customer_id 필드와 product_id 필드를 가지고 있습니다. 이 customer_id 필드는 customers collection의 _id 필드와, product_id 필드는 products collection의 _id 필드와 Join하려고 합니다.
- orders + customers + products 하기!
db.orders.aggregate([
{
$lookup: {
from: "customers",
localField: "customer_id",
foreignField: "_id",
as: "customer"
}
},
{
$lookup: {
from: "products",
localField: "product_id",
foreignField: "_id",
as: "product"
}
}
])
위의 예제에서는 orders collection과 customers collection, products collection을 Join하였습니다. Join 결과는 각각 customer 배열 필드와 product 배열 필드에 저장됩니다.
이상 mongodb에서의 조인인 lookup에 대한 설명을 마무리하겠다.
반응형
'mongodb' 카테고리의 다른 글
MongoDB Indexing: Advantages, Precautions, and How to Create Background Indexes (0) | 2023.03.15 |
---|---|
Mongodb 인덱스 생성시 주의사항 - ( 백그라운드 인덱스 생성 ) (0) | 2023.03.14 |
mongodb group by 샘플 (0) | 2023.03.09 |
MongoDB TTL 설정 ( 데이터 자동 삭제 스케줄 ) (1) | 2022.09.08 |
MongoDB Spark Connection 테스트 (0) | 2021.07.15 |