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

MongoDB에서 배열 크기 필드 합산하는 방법 – $sum과 $size 연산자 활용법

MongoDB에서 배열 크기 필드의 합계 구하기

MongoDB에서 여러 문서에 저장된 배열의 크기를 모두 합산하려면 $sum 연산자와 $size 연산자를 함께 사용하면 됩니다. $size는 배열의 요소 개수를 반환하고, $sum은 이 값들을 누적하여 합계를 계산해 줍니다.

먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

> db.demo231.insertOne({"Subjects":["MongoDB","MySQL","SQL Server"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3fc73ff4cebbeaebec5143")
}
> db.demo231.insertOne({"Subjects":["Java","C","C++"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3fc757f4cebbeaebec5144")
}
> db.demo231.insertOne({"Subjects":["Python","Spring"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3fc762f4cebbeaebec5145")
}

삽입된 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.

> db.demo231.find();

위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

{ "_id" : ObjectId("5e3fc73ff4cebbeaebec5143"), "Subjects" : [ "MongoDB", "MySQL", "SQL Server" ] }
{ "_id" : ObjectId("5e3fc757f4cebbeaebec5144"), "Subjects" : [ "Java", "C", "C++" ] }
{ "_id" : ObjectId("5e3fc762f4cebbeaebec5145"), "Subjects" : [ "Python", "Spring" ] }

배열 크기 합산 쿼리 작성하기

이제 aggregate() 메서드와 $group 단계를 활용하여 각 문서의 배열 크기를 합산하는 쿼리를 작성해 보겠습니다.

> db.demo231.aggregate([{'$group': {'_id': '_id', 'ToTalValue': {'$sum': {'$size': '$Subjects'}}}}])

이 쿼리가 실행되면 다음과 같은 결과가 출력됩니다.

{ "_id" : "_id", "ToTalValue" : 8 }

결과 분석

출력된 결과를 보면 ToTalValue가 8로 계산되었습니다. 이는 첫 번째 문서의 배열에 3개(“MongoDB”, “MySQL”, “SQL Server”), 두 번째 문서의 배열에 3개(“Java”, “C”, “C++”), 세 번째 문서의 배열에 2개(“Python”, “Spring”)의 요소가 있어 3 + 3 + 2 = 8이 되기 때문입니다.

이처럼 $group으로 전체 문서를 하나의 그룹으로 묶은 뒤, $sum 안에서 $size를 사용하면 배열 필드의 전체 크기를 손쉽게 합산할 수 있습니다.