| @@ 558-585 (lines=28) @@ | ||
| 555 | * @param array $options |
|
| 556 | * @return mixed |
|
| 557 | */ |
|
| 558 | public function max($field, array $query = [], array $options = ['maxTimeMS' => 0]) |
|
| 559 | { |
|
| 560 | $this->validateQueryOptions($options); |
|
| 561 | ||
| 562 | $this->logger->info( |
|
| 563 | sprintf('Maximum value in field %s', $field), |
|
| 564 | [ |
|
| 565 | 'filter' => $query, |
|
| 566 | 'options' => $options |
|
| 567 | ] |
|
| 568 | ); |
|
| 569 | ||
| 570 | $result = $this->findBy( |
|
| 571 | $query, |
|
| 572 | [ |
|
| 573 | Query::PROJECTION => [ |
|
| 574 | $field => true |
|
| 575 | ], |
|
| 576 | Query::SORT => [ |
|
| 577 | $field => -1 |
|
| 578 | ], |
|
| 579 | Query::LIMIT => 1 |
|
| 580 | ] |
|
| 581 | )->toArray(); |
|
| 582 | ||
| 583 | return ArrayAccessor::dget($result, '0.' . $field); |
|
| 584 | ||
| 585 | } |
|
| 586 | ||
| 587 | /** |
|
| 588 | * Return the min value for a field in a collection |
|
| @@ 595-621 (lines=27) @@ | ||
| 592 | * @param array $options |
|
| 593 | * @return \Traversable |
|
| 594 | */ |
|
| 595 | public function min($field, array $query = [], array $options = ['maxTimeMS' => 0]) |
|
| 596 | { |
|
| 597 | $this->validateQueryOptions($options); |
|
| 598 | ||
| 599 | $this->logger->info( |
|
| 600 | sprintf('Minimum value in field %s', $field), |
|
| 601 | [ |
|
| 602 | 'filter' => $query, |
|
| 603 | 'options' => $options |
|
| 604 | ] |
|
| 605 | ); |
|
| 606 | ||
| 607 | $result = $this->findBy( |
|
| 608 | $query, |
|
| 609 | [ |
|
| 610 | Query::PROJECTION => [ |
|
| 611 | $field => true |
|
| 612 | ], |
|
| 613 | Query::SORT => [ |
|
| 614 | $field => 1 |
|
| 615 | ], |
|
| 616 | Query::LIMIT => 1 |
|
| 617 | ] |
|
| 618 | )->toArray(); |
|
| 619 | ||
| 620 | return ArrayAccessor::dget($result, '0.' . $field); |
|
| 621 | } |
|
| 622 | ||
| 623 | /** |
|
| 624 | * @param $field |
|