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

최소 점수로 두 개의 문서를 얻기 위한 MongoDB 집계

<시간/>

정렬된 마크 목록을 얻으려면 $sort를 사용하십시오. $limit:2 사용 표시가 가장 적은 두 개의 문서만 표시합니다. 문서로 컬렉션을 만들자 −

> db.demo709.insertOne({Name:"John","Marks":75});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea839005d33e20ed1097b76")
}
> db.demo709.insertOne({Name:"Chris","Marks":45});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea839075d33e20ed1097b77")
}
> db.demo709.insertOne({Name:"David","Marks":54});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea839125d33e20ed1097b78")
}
> db.demo709.insertOne({Name:"Bob","Marks":69});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea839295d33e20ed1097b79")
}

find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -

> db.demo709.find();

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

{ "_id" : ObjectId("5ea839005d33e20ed1097b76"), "Name" : "John", "Marks" : 75 }
{ "_id" : ObjectId("5ea839075d33e20ed1097b77"), "Name" : "Chris", "Marks" : 45 }
{ "_id" : ObjectId("5ea839125d33e20ed1097b78"), "Name" : "David", "Marks" : 54 }
{ "_id" : ObjectId("5ea839295d33e20ed1097b79"), "Name" : "Bob", "Marks" : 69 }

다음은 최소 점수를 가진 두 개의 문서를 가져오는 쿼리입니다 -

> db.demo709.aggregate({
...    $group: {
...       _id: '$Marks',
...       ListOfName: { $push: '$Name' }
...    }
... }, {
...    $sort: {
...       '_id': 1
...    }
... }, {
...    $limit: 2
... });

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

{ "_id" : 45, "ListOfName" : [ "Chris" ] }
{ "_id" : 54, "ListOfName" : [ "David" ] }