이를 위해 $project를 집계()와 함께 사용하십시오. 집계의 $project는 요청된 필드가 있는 문서를 파이프라인의 다음 단계로 전달합니다.
문서로 컬렉션을 만들자 −
> db.demo762.insertOne({... "_id" :{... "userId":101,... "userName":"Chris"... },... . "countryName" :"US",....... "details" :[... {... "Name" :"Robert",... "DueDate" :"2020-04-10"...... },....... {... "이름" :"로버트",... "DueDate" :"2020-04-09"... },... {... "이름" :"Robert",... "DueDate" :"2020-03-06"... }... ]... }... );{ "승인됨" :true, "insertedId" :{ "userId" :101, "사용자 이름" :"크리스" }}
find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -
> db.demo762.find();
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" :{ "userId" :101, "userName" :"Chris" }, "countryName" :"US", "details" :[ { "Name" :"Robert", "DueDate" :"2020-04-10" }, { "이름" :"로버트", "DueDate" :"2020-04-09" }, { "이름" :"로버트", "DueDate" :"2020-03-06 " } ] }
다음은 MongoDB 집계 및 프로젝션에 대한 쿼리입니다. -
> db.demo762.aggregate([... { "$match":{... "_id":{ "$eq":{ userId:101,userName:"Chris" }}... } },... { "$unwind":"$details" },... { "$sort":{ "details.DueDate":1 }},... { "$group":{... "_id":"$_id",... "details":{ "$push":"$details" },... "countryName":{ "$first":"$countryName" }... } },... { "$project":{ "details":{ "$slice":["$details", 2] } ,"countryName":1 }}... ]).pretty();사전>이것은 다음과 같은 출력을 생성합니다 -
{ "_id" :{ "userId" :101, "userName" :"Chris" }, "countryName" :"US", "details" :[ { "Name" :"Robert", "DueDate" :"2020-03-06" }, { "이름" :"로버트", "DueDate" :"2020-04-09" } ]}