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

즐거운 코딩!!!

좋은 웹페이지 즐겨찾기