Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

두 개의 필드를 선택하고 MongoDB에서 고유한 값으로 정렬된 배열을 반환하시겠습니까?

<시간/>

두 개의 필드를 선택하고 고유한 값으로 정렬된 배열을 반환하려면 $setUnion 연산자와 함께 집계 프레임워크를 사용합니다. 먼저 문서로 컬렉션을 생성해 보겠습니다. −

> db.sortedArrayWithDistinctDemo.insertOne(
...    { value1: 4, value2: 5}
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc690b99cb58ca2b005e666")
}
> db.sortedArrayWithDistinctDemo.insertOne(
...    {value1: 5, value2: 6}
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc690b99cb58ca2b005e667")
}
> db.sortedArrayWithDistinctDemo.insertOne(
...    {value1: 7, value2: 4}
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc690b99cb58ca2b005e668")
}

다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 표시하는 쿼리입니다. -

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

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" : ObjectId("5cc690b99cb58ca2b005e666"), "value1" : 4, "value2" : 5 }
{ "_id" : ObjectId("5cc690b99cb58ca2b005e667"), "value1" : 5, "value2" : 6 }
{ "_id" : ObjectId("5cc690b99cb58ca2b005e668"), "value1" : 7, "value2" : 4 }

다음은 두 필드를 선택하고 고유한 값으로 정렬된 배열을 반환하는 쿼리입니다. 여기서 필드는 "value1" 및 "value2"입니다 -

> db.sortedArrayWithDistinctDemo.aggregate(
...    [
...       { "$group": {
...          "_id": null,
...          "value1": { "$push": "$value1" },
...          "value2": { "$push": "$value2" }
...       }},
...       { "$project": {
...          "_id": 0,
...          "bothValues": { "$setUnion": [ "$value1", "$value2" ] }
...       }}
...    ]
... );

그러면 다음과 같은 출력이 생성됩니다. 이제 정렬된 배열이 고유한 값으로 반환됩니다 -

{ "bothValues" : [ 4, 5, 6, 7 ] }