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

MongoDB의 배열에서 여러 항목을 검색하는 쿼리?

<시간/>

배열에서 여러 항목을 검색하려면 집계 프레임워크를 사용합니다. 먼저 문서로 컬렉션을 만들어 보겠습니다. −

> db.retrieveMultipleDemo.insertOne(
...   {
...      "UserDetails":
...      [
...         { "_id": "101", "UserName":"John", "UserAge": 23 },
...         { "_id": "102", "UserName":"Carol", "UserAge": 21 },
...         { "_id": "103", "UserName":"David", "UserAge": 23},
...         { "_id": "104", "UserName":"Sam", "UserAge": 25}
...      ]
...   }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd40c85edc6604c74817cf0")
}

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

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

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

{
   "_id" : ObjectId("5cd40c85edc6604c74817cf0"),
   "UserDetails" : [
      {
         "_id" : "101",
         "UserName" : "John",
         "UserAge" : 23
      },
      {
         "_id" : "102",
         "UserName" : "Carol",
         "UserAge" : 21
      },
      {
         "_id" : "103",
         "UserName" : "David",
         "UserAge" : 23
      },
      {
         "_id" : "104",
         "UserName" : "Sam",
         "UserAge" : 25
      }
   ]
}

다음은 배열에서 여러 항목을 검색하는 쿼리입니다 -

> db.retrieveMultipleDemo.aggregate([
...   {$unwind:"$UserDetails"},
...   {$match:{"UserDetails._id":{$in:myIds},"UserDetails.UserAge":23}},
...   {$group:{"_id":"_id","UserDetails":{$push:"$UserDetails"}}},
...   {$project:{"_id":0,"UserDetails":1}}
... ]);

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

{ "UserDetails" : [ { "_id" : "101", "UserName" : "John", "UserAge" : 23 }, { "_id" : "103", "UserName" : "David", "UserAge" : 23 } ] }