mongoDB에서 그룹화하고 결과로 모든 필드를 반환하는 방법
mongoDB에서 aggregate 메서드를 사용하여 그룹화하고 있지만 사용할 때$group
그룹화할 때 사용한 유일한 필드를 반환합니다.난 시도했다.$project
하지만 그것도 작동하지 않습니다.저도 노력했습니다.$first
작동했지만 결과 데이터의 형식이 다릅니다.
필요한 응답 형식은 다음과 같습니다.
{
"_id" : ObjectId("5b814b2852d47e00514d6a09"),
"tags" : [],
"name" : "name here",
"rating" : "123456789"
}
그리고 내 query.response에 $group을 추가한 후에는 _id의 값이 변경됩니다.(그리고 $group은 _id만 가져갑니다. 다른 키워드를 시도하면 무언가를 축적하는 오류가 발생합니다.이것도 설명해 주세요.)
{
"_id" :"name here" //the value of _id changed to the name field which i used in $group condition
}
구조와 필드를 변경하지 않고 이름 필드의 중복 항목을 제거해야 합니다.또한 노드를 사용하고 있습니다.mongoose가 있는 JS, 이에 맞는 솔루션을 제공해주세요.
아래 집계 쿼리를 사용할 수 있습니다.
$$ROOT
각 이름에 따라 전체 문서를 보관하고 다음을 수행합니다.$replaceRoot
문서를 맨 위로 승격합니다.
db.col.aggregate([
{"$group":{"_id":"$name","doc":{"$first":"$$ROOT"}}},
{"$replaceRoot":{"newRoot":"$doc"}}
])
user2683814의 솔루션은 나에게 효과가 있었지만, 나의 경우, 우리가 새로운 루트 객체를 교체할 때 카운터 어큐뮬레이터가 있으며, 마지막 단계에서 카운트 필드가 누락되어 사용했습니다.$mergeObjects
연산자가 내 카운트 필드를 다시 가져옵니다.
db.collection.aggregate([
{
$group: {
_id: '$product',
detail: { $first: '$$ROOT' },
count: {
$sum: 1,
},
},
},
{
$replaceRoot: {
newRoot: { $mergeObjects: [{ count: '$count' }, '$detail'] },
},
}])
데이터베이스에서 데이터를 그룹화할 때 필요한 필드에 대해 누적된 작업을 수행하고 누적된 작업에 포함되지 않을 다른 필드는 다음과 같은 그룹으로 사용됩니다.
db.collection.aggregate([{
$group: {
_id: { field1: "", field1: "" },
acc: { $sum: 1 }
}}]
여기서 _id 개체에는 보유할 다른 모든 필드가 포함됩니다.
당신의 데이터를 위해 당신은 이것을 시도할 수 있습니다.
db.collection.aggregate([{
$group: {
_id: "$name",
rating: { $first: "$rating" },
tags: { $first: "$tag" },
docid: { $first: "$_id" }
}
},
{
$project: {
_id: "$docid",
name: "$_id",
rating: 1,
tags: 1
}
}])
이 쿼리를 사용할 수 있습니다.
db.col.aggregate([
{"$group" : {"_id" : "$name","data" : {"$first" : "$$ROOT"}}},
{"$project" : {
"tags" : "$data.tags",
"name" : "$data.name",
"rating" : "$data.rating",
"_id" : "$data._id"
}
}])
저는 제 컬렉션을 다음 기준으로 그룹화하고 싶었습니다.groupById
키를 사용하여 키 값 쌍으로 저장합니다.groupById
그룹의 모든 항목으로서 가치를 평가합니다.
db.col.aggregate([{$group :{_id :"$groupById",newfieldname:{$push:"$"}}}]).pretty()
이것은 나에게 잘 작동합니다.
언급URL : https://stackoverflow.com/questions/52566913/how-to-group-in-mongodb-and-return-all-fields-in-result
'programing' 카테고리의 다른 글
npm 오류 "npm ERR! code ELIFECYCLE" 해결 방법 (0) | 2023.05.17 |
---|---|
목록(오브젝트)을 목록(오브스트링)으로 변환 (0) | 2023.05.17 |
엑셀에서 내 크로스탭이 왜 끊기는 거지? (0) | 2023.05.17 |
Postgre를 시작하는 방법윈도우즈의 SQL? (0) | 2023.05.17 |
PSQL 예외: 현재 트랜잭션이 중단되었습니다. 트랜잭션 블록이 끝날 때까지 명령이 무시됩니다. (0) | 2023.05.12 |