MongoDB 2.4.8 사용,
다음 기록이 있습니다
{
"category" : "TOYS",
"price" : 12,
"status" : "online",
"_id" : "35043"
}
{
"category" : "TOYS",
"price" : 13,
"status" : "offline",
"_id" : "35044"
}
{
"category" : "TOYS",
"price" : 22,
"status" : "online",
"_id" : "35045"
}
{
"category" : "BOOKS",
"price" : 13,
"status" : "offline",
"_id" : "35046"
}
{
"category" : "BOOKS",
"price" : 17,
"status" : "online",
"_id" : "35047"
}
온라인 상태이고 총 가격이 50 이상인 각 카테고리의 평균 가격을 찾고 싶습니다.
이 쿼리를 구성하는 방법을 잘 모르겠습니다.
지금까지 온라인 상태 인 각 범주에 대한 총 가격을 요약하여 쿼리를 구성 할 수 있습니다.
db.products.aggregate([
{"$match":
{
{status:"online"}
}
},
{"$group" :
{
"_id": "$category",
"total_price": {$sum:"$price"},
}
}
])
내가 찾고있는 평균을 얻기 위해이 쿼리에 더 많은 단계를 추가하는 방법을 잘 모르겠습니다.
집계 파이프 라인에 단계를 더 추가하기 만하면됩니다. 예를 들면 :
db.items.aggregate([
{$match:
{
status:"online"
}
},
{$group :
{
_id: "$category",
total_price: {$sum:"$price"},
}
},
{$match:
{
total_price:{$gt:50}
}
},
{$group :
{
_id: "1",
avg_price: {$avg:"$total_price"},
}
},
]);
설명에 따라 편집 됨
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다