두 필드 합계로 정렬하려면 집계 프레임워크를 사용할 수 있습니다. 먼저 문서로 컬렉션을 생성하겠습니다.
> db.orderByTwoFieldsDemo.insertOne({"Value1":10,"Value2":35});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca285576304881c5ce84baa")
}
> db.orderByTwoFieldsDemo.insertOne({"Value1":12,"Value2":5});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2855f6304881c5ce84bab")
}
> db.orderByTwoFieldsDemo.insertOne({"Value1":55,"Value2":65});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca285686304881c5ce84bac")
} 다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 표시하는 쿼리입니다.
> db.orderByTwoFieldsDemo.find().pretty();
그러면 다음과 같은 출력이 생성됩니다.
{
"_id" : ObjectId("5ca285576304881c5ce84baa"),
"Value1" : 10,
"Value2" : 35
}
{
"_id" : ObjectId("5ca2855f6304881c5ce84bab"),
"Value1" : 12,
"Value2" : 5
}
{
"_id" : ObjectId("5ca285686304881c5ce84bac"),
"Value1" : 55,
"Value2" : 65
} 사례 1 :다음은 두 필드 합계로 정렬하고 결과를 오름차순으로 가져오는 쿼리입니다.
> db.orderByTwoFieldsDemo.aggregate(
... [
... {$project:{Value1:1, Value2:1, orderBySumValue:{$add: ["$Value1", "$Value2"]}}},
... {$sort:{orderBySumValue:1}}]
... ); 그러면 다음과 같은 출력이 생성됩니다.
{ "_id" : ObjectId("5ca2855f6304881c5ce84bab"), "Value1" : 12, "Value2" : 5,
"orderBySumValue" : 17 }
{ "_id" : ObjectId("5ca285576304881c5ce84baa"), "Value1" : 10, "Value2" : 35,
"orderBySumValue" : 45 }
{ "_id" : ObjectId("5ca285686304881c5ce84bac"), "Value1" : 55, "Value2" : 65,
"orderBySumValue" : 120 } 사례 2 :다음은 두 필드의 합계를 기준으로 정렬하고 결과를 내림차순으로 가져오는 쿼리입니다.
> db.orderByTwoFieldsDemo.aggregate( [ {$project:{Value1:1, Value2:1,
orderBySumValue:{$add: ["$Value1", "$Value2"]}}}, {$sort:{orderBySumValue:-1}}] ); 그러면 다음과 같은 출력이 생성됩니다.
{ "_id" : ObjectId("5ca285686304881c5ce84bac"), "Value1" : 55, "Value2" : 65,
"orderBySumValue" : 120 }
{ "_id" : ObjectId("5ca285576304881c5ce84baa"), "Value1" : 10, "Value2" : 35,
"orderBySumValue" : 45 }
{ "_id" : ObjectId("5ca2855f6304881c5ce84bab"), "Value1" : 12, "Value2" : 5,
"orderBySumValue" : 17 }