Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 SELECT 필드 AS 별칭에 해당하는 쿼리 작성 방법

MySQL에서는 SELECT 문을 사용할 때 AS 키워드를 통해 컬럼에 별칭(alias)을 부여할 수 있습니다. MongoDB에서도 마찬가지로 필드 이름에 별칭을 지정할 수 있으며, 이때 aggregate() 메서드의 $project 연산자를 활용합니다.

기본 문법

MongoDB에서 MySQL의 SELECT 필드 AS 별칭에 해당하는 기본 문법은 다음과 같습니다.

db.yourCollectionName.aggregate(
[
    { "$project": {
        "_id": 0,
        "anyAliasName": "$yourFieldName"
    }}
]);

$project 단계에서 원래 필드 값을 참조하려면 필드명 앞에 $를 붙여야 하며, "_id": 0으로 설정하면 결과에서 _id 필드가 제외됩니다.

샘플 컬렉션 생성하기

먼저 예제로 사용할 컬렉션과 문서들을 생성해 보겠습니다.

> db.selectFieldAsAnotherNameDemo.insertOne({"Name":"Larry"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9d448827b86948e204ca91")
}
> db.selectFieldAsAnotherNameDemo.insertOne({"Name":"Robert"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9d449027b86948e204ca92")
}
> db.selectFieldAsAnotherNameDemo.insertOne({"Name":"Sam"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9d449527b86948e204ca93")
}
> db.selectFieldAsAnotherNameDemo.insertOne({"Name":"Mike"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9d449927b86948e204ca94")
}

전체 문서 조회하기

find() 메서드를 사용하여 컬렉션의 모든 문서를 조회합니다.

> db.selectFieldAsAnotherNameDemo.find().pretty();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5c9d448827b86948e204ca91"), "Name" : "Larry" }
{ "_id" : ObjectId("5c9d449027b86948e204ca92"), "Name" : "Robert" }
{ "_id" : ObjectId("5c9d449527b86948e204ca93"), "Name" : "Sam" }
{ "_id" : ObjectId("5c9d449927b86948e204ca94"), "Name" : "Mike" }

SELECT 필드 AS 별칭에 해당하는 MongoDB 쿼리 실행

이제 $project를 사용하여 Name 필드를 StudentName이라는 별칭으로 출력하는 쿼리를 실행해 보겠습니다.

> db.selectFieldAsAnotherNameDemo.aggregate(
... [
...     { "$project": {
...         "_id": 0,
...         "StudentName": "$Name"
...     }}
... ]);

쿼리 실행 결과는 다음과 같습니다.

{ "StudentName" : "Larry" }
{ "StudentName" : "Robert" }
{ "StudentName" : "Sam" }
{ "StudentName" : "Mike" }

출력 결과를 보면 _id 필드는 제외되고, 기존의 Name 필드가 StudentName이라는 새로운 이름으로 변경되어 조회된 것을 확인할 수 있습니다. 이처럼 MongoDB에서는 aggregate$project 연산자 하나만으로도 MySQL의 SELECT 필드 AS 별칭과 동일한 효과를 손쉽게 구현할 수 있습니다.