7
votes

MongoDB: Trouver la valeur numérique la plus élevée d'une colonne

J'ai la collection MongoDB de documents contenant plusieurs domaines. L'une des colonnes / champs doit être numérique uniquement, mais certains de ces champs contiennent des données non numériques (corrompues) sous forme de valeurs de chaîne. Je devrais trouver la valeur numérique la plus élevée de cette colonne, à l'exclusion des données corrompues et non numériques. Je suis au courant de la question Obtenir la valeur la plus élevée d'une colonne dans MongoDB , mais Afaik, cette affaire étendue n'était pas couverte.

L'exemple ci-dessous représente le problème. Pour la valeur la plus élevée, le document avec "Âge": 70 code> doit être retourné: p> xxx pré>

fournissant un exemple php pour la recherche () / Findone () La requête serait beaucoup d'aide. Merci beaucoup! P>

Johnnyhk est venu avec la solution parfaite. Voici le code PHP de travail: P>

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


0 commentaires

4 Réponses :


9
votes

Vous pouvez utiliser le $ Type opérateur avec $ pas in Votre requête pour exclure les docs où Âge est une chaîne. Dans la coque, votre requête ressemblerait à: xxx

ou en php de martti: xxx


1 commentaires

Wow c'était rapide, merci! Fonctionne parfaitement. Je vais ajouter le code PHP associé au travail à la question.



0
votes

Vous pouvez utiliser une fonction agrégée pour obtenir un nombre maximum de collections comme celle-ci. XXX


0 commentaires

7
votes

avec pilote PHP (MongoDB) strong>

Utilisation de FindOne () CODE>

$filter=[];
$options = ['sort' => ['age' => -1]]; // -1 is for DESC
$result = $collection->findOne(filter, $options);
$maxAge = $result['age']


0 commentaires

0
votes

Cela fonctionne pour moi xxx


0 commentaires