몽구스와 개수로 그룹화하는 방법
어쨌든 다음과 같은 문서 모음이 있습니다.
[
{
_id: 1,
category: food,
name: avocado
},
{
_id: 2,
category: food,
name: orange
},
{
_id: 3,
category: drink,
name: milk
},
]
다음과 같은 데이터를 반환하는 끝점을 만들고 싶었습니다.
g
data: {
food: 2,
drink: 1
}
기본적으로 범주의 이름과 문서 수입니다. 글쎄, 그것은 몇 가지 자습서와 다른 SO 스레드에 걸친 여정을 가져 왔습니다.
면책 조항: 저는 아마도 MongoDB에 더 익숙할 것입니다. 예전에는 그랬지만 인생의 많은 일처럼 잊어버리고 MongoDB와 Mongoose를 다시 사용할 준비가 되지 않았습니다. 바로 몽구스로 향했습니다.
먼저 Mongoose와의 그룹화가 Aggregate 이라는 것을 발견했습니다. 나는
Model.aggregate()
를 찾았고, 이것은 나를 이 tutorial 로 이끌었습니다. 그들의 The $group Stage
섹션은 저에게 효과적인 솔루션을 제공했습니다.const data = await YourModelName.aggregate([
{
$group: {
_id: '$category',
count: { $sum: 1 } // this means that the count will increment by 1
}
}
]);
그러나 데이터는 큰 문제가 아니라 약간 다르게 반환되었습니다.
data: [
{
_id: "food",
count: 2
},
{
_id: "drink",
count: 1
}
]
큰 문제는 아니었고 가능한 한 좋았을 것입니다. 하지만 저는 계속해서 탐색했습니다. 이로 인해 여러 SO 스레드(그렇게 많지는 않음), 약간 다른 주제가 있었지만 거의 동일한 구문으로 진행되었습니다.
그러다가 우연히
aggregate.sortByCount()
here 을 발견했습니다.const data = await Machine.aggregate().sortByCount("category");
sortByCount
는 필드의 이름을 예상하고 전체 $group, $count 등을 수행합니다. 또는 적어도 이것은 나에게 일어난 일입니다. 훨씬 더 간단합니다.지금은 이 정도면 충분하다고 생각합니다. 이 주제에 대한 탐색을 중단하겠습니다. 이것이 도움이 되었기를 바랍니다(:
Reference
이 문제에 관하여(몽구스와 개수로 그룹화하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/petrussola/mongoose-and-how-to-group-by-count-5gcm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)