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

MongoDB에서 이름 목록을 기반으로 태그 개수를 조회하는 방법 – $in 연산자 활용하기

MongoDB에서 특정 이름 목록에 포함된 값을 가진 문서를 조회하고 그 개수(태그 수)를 확인하려면 $in 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용하여 문서가 담긴 컬렉션을 생성합니다.

> db.tagCountDemo.insertOne({"ListOfNames":["John","Sam","Carol"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd64b387924bb85b3f48944")
}
> db.tagCountDemo.insertOne({"ListOfNames":["Bob","David","John"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd64b4b7924bb85b3f48945")
}
> db.tagCountDemo.insertOne({"ListOfNames":["Mike","Robert","Chris"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd64b5d7924bb85b3f48946")
}
> db.tagCountDemo.insertOne({"ListOfNames":["James","Carol","Jace"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd64b717924bb85b3f48947")
}

2. 저장된 전체 문서 확인

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

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

위 쿼리는 다음과 같은 결과를 출력합니다.

{
   "_id" : ObjectId("5cd64b387924bb85b3f48944"),
   "ListOfNames" : [
      "John",
      "Sam",
      "Carol"
   ]
}
{
   "_id" : ObjectId("5cd64b4b7924bb85b3f48945"),
   "ListOfNames" : [
      "Bob",
      "David",
      "John"
   ]
}
{
   "_id" : ObjectId("5cd64b5d7924bb85b3f48946"),
   "ListOfNames" : [
      "Mike",
      "Robert",
      "Chris"
   ]
}
{
   "_id" : ObjectId("5cd64b717924bb85b3f48947"),
   "ListOfNames" : [
      "James",
      "Carol",
      "Jace"
   ]
}

3. $in 연산자로 조건에 맞는 문서 조회

다음은 $in 연산자를 사용하여 'John' 또는 'Carol'이라는 이름이 ListOfNames 배열에 포함된 문서만 조회하는 쿼리입니다.

> db.tagCountDemo.find({"ListOfNames":{$in:['John','Carol']}});

위 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : ObjectId("5cd64b387924bb85b3f48944"), "ListOfNames" : [ "John", "Sam", "Carol" ] }
{ "_id" : ObjectId("5cd64b4b7924bb85b3f48945"), "ListOfNames" : [ "Bob", "David", "John" ] }
{ "_id" : ObjectId("5cd64b717924bb85b3f48947"), "ListOfNames" : [ "James", "Carol", "Jace" ] }

4. 태그 개수(문서 수) 구하기

조건에 맞는 문서의 정확한 개수를 얻으려면 위 쿼리 뒤에 count() 메서드를 붙이면 됩니다.

> db.tagCountDemo.find({"ListOfNames":{$in:['John','Carol']}}).count();

결과는 다음과 같습니다.

3

'John' 또는 'Carol'이 포함된 문서는 총 3개이므로 태그 수가 3으로 반환됩니다. 최신 MongoDB 버전에서는 성능상 이점 때문에 count() 대신 countDocuments() 메서드를 사용하는 것이 권장됩니다.