NO SQL Database MongoDB의 두 컬렉션에서 데이터를 가져오는 방법
데이터가 아래에 있는 직원 수집:
{
"_id": "kcXtyaB7jGPw9Ks",
"name": "Test name",
"post": "Manager",
"departmentId": "xQQrzRgi8",
"dateCreated": "2022-07-12T13:09:16.270Z",
"dateModified": "2022-07-12T13:09:16.270Z"
},
{
"_id": "mNkyaB6jGPw7KB",
"name": "Test2 name",
"post": "Manager",
"departmentId": "56sgAeKfx",
"dateCreated": "2022-07-12T13:09:16.270Z",
"dateModified": "2022-07-12T13:09:16.270Z"
}
아래와 같은 데이터가 있는 부서 모음:
{
"_id": "xQQrzRgi8",
"departmentName": "Testing department"
},
{
"_id": "56sgAeKfx",
"departmentName": "HR department"
}
Employee 데이터에 대한 응답으로 우리는 아래와 같이 부서 ID가 있는 부서 이름을 원합니다.
{
"_id": "kcXtyaB7jGPw9Ks",
"dateCreated": "2022-07-12T13:09:16.270Z",
"dateModified": "2022-07-12T13:09:16.270Z",
"departmentId": "xQQrzRgi8",
"departmentName": "Testing department",
"name": "Test name",
"post": "Manager"
},
{
"_id": "mNkyaB6jGPw7KB",
"dateCreated": "2022-07-12T13:09:16.270Z",
"dateModified": "2022-07-12T13:09:16.270Z",
"departmentId": "56sgAeKfx",
"departmentName": "HR department",
"name": "Test2 name",
"post": "Manager"
}
위 솔루션의 경우 아래와 같이 MongoDB에서 집계해야 합니다.
다음은 쿼리가 있는 예입니다: https://mongoplayground.net/p/V-SC5pmKQR7
db.Employee.aggregate([
{
$lookup: {
from: "Department",
localField: "departmentId",
foreignField: "_id",
as: "departmentName",
},
},
{
$set: {
departmentName: {
$first: "$departmentName.departmentName"
},
},
}
])
직원 데이터에 대한 응답으로 부서 이름만 원하는 부서 ID 대신 쿼리는 다음과 같습니다.
db.Employee.aggregate([
{
$lookup: {
from: "Department",
localField: "departmentId",
foreignField: "_id",
as: "departmentName",
},
},
{
$set: {
departmentName: {
$first: "$departmentName.departmentName"
},
},
},
{
$project: {
departmentId: 0
},
},
])
다음은 쿼리입니다. 예: https://mongoplayground.net/p/M4Nn7ud33KL
즐거운 코딩!!!
Reference
이 문제에 관하여(NO SQL Database MongoDB의 두 컬렉션에서 데이터를 가져오는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/slk5611/how-to-get-data-from-two-collection-in-no-sql-database-mongodb-ich텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)