
CollectionFind::having 기능은 MongoDB의 aggregation framework를 사용하여 데이터를 필터링할 때 사용됩니다. 하지만 having 조건을 사용하여 데이터를 필터링하는 경우, $where 함수를 사용하는 것이 아니라 aggregation framework를 사용해야 합니다.
다음은 having 조건을 사용하여 데이터를 필터링하는 예제입니다.
#hostingforum.kr
javascript
db.collection.aggregate([
{
$match: {
field1: { $gt: 0 },
field2: { $gt: 0 }
}
},
{
$project: {
result: { $add: ["$field1", "$field2"] }
}
},
{
$match: {
result: { $gt: 10 }
}
}
]);
이 예제에서는 aggregation framework를 사용하여 having 조건을 설정합니다. 첫 번째 match stage에서는 field1과 field2가 양수인 문서를 필터링하고, 두 번째 project stage에서는 field1과 field2를 더하여 result 필드를 생성합니다. 마지막 match stage에서는 result 필드가 10보다 큰 문서를 필터링합니다.
having 조건과 다른 필터링 조건을 함께 사용할 수 있습니다. 예를 들어, having 조건과 $or를 함께 사용할 수 있습니다.
#hostingforum.kr
javascript
db.collection.aggregate([
{
$match: {
$or: [
{ field1: { $gt: 0 }, field2: { $gt: 0 } },
{ field3: { $gt: 0 }, field4: { $gt: 0 } }
]
}
},
{
$project: {
result: { $add: ["$field1", "$field2"] }
}
},
{
$match: {
result: { $gt: 10 }
}
}
]);
이 예제에서는 having 조건과 $or를 함께 사용하여 field1과 field2가 양수인 문서 또는 field3과 field4가 양수인 문서를 필터링하고, having 조건을 적용합니다.
제가 잘못 이해한 부분이 없으며, 다른 방법을 사용해야 할 필요는 없습니다. MongoDB의 aggregation framework를 사용하여 having 조건을 설정하는 것이 올바른 방법입니다.
2025-08-03 09:26