mongodb: нахождение самого высокого числового значения колонки

У меня есть коллекция MongoDB документов, содержащих несколько областей. Одна из колонок/областей должна быть числовой только, но некоторые из этих областей содержат нечисловые (коррумпированные) данные как ценности последовательности. Я должен найти самое высокое численное значение этой колонки, исключая коррумпированные, нечисловые данные. Я знаю о вопросе Получение самой высокой ценности колонки в MongoDB, но AFAIK, этот расширенный случай не был покрыт.

Пример ниже изображает проблему. Для самой высокой стоимости, документа с "возраст": 70 должен быть возвращен:

[
{
    "id": "aa001",
    "age": "90"
},
{
    "id": "bb002",
    "age": 70
},
{
    "id": "cc003",
    "age": 20,
}
]

Обеспечивая пример PHP для находки ()/findOne() вопрос помог бы. Большое спасибо!

JohnnyHK предложил идеальное решение. Вот является работа кодом PHP:

$cursor = $collection->find(array('age' => array('$not' => array('$type' => 2))), array('age' => 1));
$cursor->sort(array('age' => -1))->limit(1);
5
nl ja de

4 ответы

Можно использовать $type оператор с $not в вашем вопросе, чтобы исключить докторов, где старят , последовательность. В раковине ваш вопрос был бы похож:

db.test.find({age: {$not: {$type: 2}}}).sort({age: -1}).limit(1)

Или в PHP от Мартти:

$cursor = $collection->find(array('age' => array('$not' => array('$type' => 2))), array('age' => 1));
$cursor->sort(array('price' => -1))->limit(1);
7
добавлено
Ничего себе, это было быстро, Спасибо! Работы отлично. I' ll добавляют работу связанный код PHP к вопросу.
добавлено автор martti, источник

with PHP driver (mongodb)
using findOne()

$filter=[];
$options = ['sort' => ['age' => -1]];//-1 is for DESC
$result = $collection->findOne(filter, $options);
$maxAge = $result['age']
3
добавлено

Можно использовать агрегатную функцию, чтобы получить максимальное количество от коллекций как это.

$data=$collection->aggregate(array
                    ( '$group'=> 
                        array('_id'=>'',
                            'age'=>array('$max'=>'$age'.)
                        )
                    )
            );
0
добавлено

Это работает на меня

$options = ['limit' => 100,'skip' => 0, 'projection' => ['score' => ['$meta' => 'textScore']], 'sort' => ['score' => ['$meta' => 'textScore']]];
0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MongoDB Russian
MongoDB Russian
1 086 участник(ов)

> db.stats() https://combot.org/chat/-1001035023078

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp