내가 5,000,000 1000 K- 주위에 (큰 JSON 문서를 삽입 만들어 https://www.compose.com/articles/aggregations-in-mongodb-by-example/
db.mycollection.aggregate([
{
{ $match: {"nested.field": "1110"}}, {
$group: {
_id: null,
total: {
$sum: "$nested.field"
},
average_transaction_amount: {
$avg: "$nested.field"
},
min_transaction_amount: {
$min: "$nested.field"
},
max_transaction_amount: {
$max: "$nested.field"
}
}
}
]);
한 수집 > V 쌍, 일부는 중첩 됨).
하나의 중첩 된 필드에 색인을 추가하기 전에 해당 필드의 개수를 계산하는 데 약 5 분이 걸립니다. 인덱스를 추가 한 후 - 계산을 위해 1 초 이내에 완료됩니다.
위의 예와 같이 SUM 또는 AVG 또는 다른 유사한 예를 시도하고 있습니다. 몇 분이 걸리지 만 초 단위는 아닙니다. MongoDB에서 집계 쿼리를 향상시킬 수있는 방법이 있습니까?
감사합니다.
[더 큰 보트 타기] (http://www.urbandictionary.com/define.php?term=We%27re%20Gonna%20Need%20a%20Bigger%20Boat). 최적의 "쿼리"선택이 가능한 작업을 수행하는 동안 많은 양의 데이터를 처리하는 완전한 프로세스에는 상당한 시간이 필요합니다. 쿼리 플래너 이상으로 인덱스에 일치하는 결과의 수를 평가합니다 (특히 메모리에있는 경우). –
Ok .. 비슷한 열을 MySQL (sum)에서 실행하고 5M 레코드에서 몇 초도 걸리지 않습니다. MySQL에서 중첩 된 JSON을 쉽게 수행 할 수 없다는 것을 이해합니다 (또는 적어도 그렇게 빠르지는 않습니다). 그러나 이 경우 Mongo의 성능이 향상 될 것으로 기대하고있었습니다. 아니면 다른 조정이 있습니까? (고객으로부터 무작위로 JSON을 얻고 있기 때문에 나에게 오기 전에 어떻게 보이는지 알지 못한다.하지만 몇 개의 필드를 저장하고 색인해야한다.) – Joe
데이터의 정적 정도에 따라 매번이 쿼리를 실행할 수있다. X를 선택하고 결과를 문서에 삽입하십시오. – Skami