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

MongoDB를 사용하여 하위 문서의 배열을 필터링하는 방법은 무엇입니까?

<시간/>

일치를 적용하기 전에 집계를 사용하고 배열 목록을 해제할 수 있습니다. 위의 개념을 이해하기 위해 문서로 컬렉션을 만들어 보겠습니다. 문서로 컬렉션을 생성하는 쿼리는 다음과 같습니다.

> db.filterArray.insertOne( { "L": [{ "N":1 }, { "N":2 } , { "N":3 }, { "N":4 }, { "N":5 } ]});

위 쿼리를 실행하면 다음이 표시됩니다.

{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6d63f2734e98fc0a434aeb")
}

find() 메서드를 사용하여 컬렉션에서 문서를 표시합니다. 쿼리는 다음과 같습니다.

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

다음은 출력입니다.

{
   "_id" : ObjectId("5c6d63f2734e98fc0a434aeb"),
   "L" : [
      {
         "N" : 1
      },
      {
         "N" : 2
      },
      {
         "N" : 3
      },
      {
         "N" : 4
      },
      {
         "N" : 5
      }
   ]
}

다음은 MongoDB를 사용하여 하위 문서의 배열을 필터링하는 쿼리입니다. $gt를 사용하여 3보다 큰 필드를 가져왔습니다.

> db.filterArray.aggregate({ $match:{_id:ObjectId("5c6d63f2734e98fc0a434aeb")}}, {
$unwind:'$L'}, {$match:{'L.N':{$gt:3}}},
{$group:{_id:'$_id',subDocument:{$push:'$L.N'}}}).pretty();

다음은 출력입니다.

{
   "_id" : ObjectId("5c6d63f2734e98fc0a434aeb"),
   "subDocument" : [
      4,
      5
   ]
}