IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NoSQL Discussion :

[MongoDB] Requêtes de type RegEx en NoSQL avec MongoDB


Sujet :

NoSQL

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 6
    Par défaut [MongoDB] Requêtes de type RegEx en NoSQL avec MongoDB
    Bonjour,

    je possède une base de données ayant une collection d'utilisateur avec un nom , un prenom , une adresse IP , etc ... .
    Je souhaiterai filtrer les utilisateurs qui ont une ip du type X.129.X.X.

    J'ai essayé différentes requêtes mais ces dernières ne me donne pas tous les utilisateurs possédant une IP de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Person.find({"ip_adress":/[0.255].129.[0.255].[0.255]./});
    Person.find({"ip_adress":/.129./});
    Si vous avez des idées , je suis preneur . Merci

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Par défaut
    Bonjour,

    Pour moi, tu as oublié d'utiliser l'opérateur $regex pour les expressions régulières.

    Tes requêtes doivent s'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Person.find({"ip_adress": { $regex : /[0.255].129.[0.255].[0.255]./} });
    Person.find({"ip_adress": { $regex : /.129./} });
    Après je ne maîtrise pas les expressions régulières, mais il faut effectivement les encadrer entre / /

    Sinon la doc peut peut-être t'aider : https://docs.mongodb.com/manual/refe...r/query/regex/

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 6
    Par défaut
    Je viens de réessayer avec $regex mais cela me donne les mêmes résultats que mes requêtes d'avant

  4. #4
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Par défaut
    Effectivement, dans ce cas, l'opérateur $regex n'est pas obligatoire, car on n'utilise pas d'options par la suite.

    Sinon voici mon jeu de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    test @ D427448 > db.Person.find()
    { "_id" : ObjectId("589dde5d4f55e8ef7d272b61"), "ip_adress" : "129.168.1.0" }
    { "_id" : ObjectId("589dde6f4f55e8ef7d272b62"), "ip_adress" : "192.129.1.0" }
    { "_id" : ObjectId("589dde7a4f55e8ef7d272b63"), "ip_adress" : "192.168.129.0" }
    { "_id" : ObjectId("589dde844f55e8ef7d272b64"), "ip_adress" : "192.168.1.129" }
    { "_id" : ObjectId("589dde954f55e8ef7d272b65"), "ip_adress" : "192.128.1.0" }
    { "_id" : ObjectId("589ddea84f55e8ef7d272b66"), "ip_adress" : "2.129.12.34" }
    { "_id" : ObjectId("589ddeb84f55e8ef7d272b67"), "ip_adress" : "34.129.123.345" }
    { "_id" : ObjectId("589de1d74f55e8ef7d272b68"), "ip_adress" : "2.129.123.345" }
    test @ D427448 >

    Et voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    test @ D427448 >
    test @ D427448 > db.Person.find ( {ip_adress : { $regex : /^([0-9]{1,3}.)129\..*/ } } )
    { "_id" : ObjectId("589dde6f4f55e8ef7d272b62"), "ip_adress" : "192.129.1.0" }
    { "_id" : ObjectId("589ddea84f55e8ef7d272b66"), "ip_adress" : "2.129.12.34" }
    { "_id" : ObjectId("589ddeb84f55e8ef7d272b67"), "ip_adress" : "34.129.123.345" }
    { "_id" : ObjectId("589de1d74f55e8ef7d272b68"), "ip_adress" : "2.129.123.345" }
    test @ D427448 >

    Attention l'expression régulière db.Person.find ( {ip_adress : { $regex : /^([0-9]{1,3}.)129\..*/ } } ) ne correspond pas à ce que tu veux faire, mais c'est pour te mettre sur la voie.

    C'est trop embêtant à écrire pour moi, mais en gros :

    1) ^([0-9]{1,3}.) se lit : pour rechercher les adresses qui commencent (^) par un chiffre de 0 à 9 ([0-9]) et on peut avoir de 1 à 3 chiffres ({1,3}) suivi d'un point

    2) 129\. se lit : on recherche la valeur 129, suivi d'un point (\.). En fait l'anti slash sert de caractère d'échappement pour le point. Car à la base . représente n'importe quel caractère

    3) .* : on recherche d'autres caractères. En fait . pour rechercher un caractère, et * pour répéter la recherche.

    Je te laisse affiner cette expression régulière, en t'aidant d'Internet si nécessaire.

    Moi j'ai jeté l'éponge :-)

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 6
    Par défaut
    Merci rouardg j'ai adapter la requête que tu m'as donné et tout marche.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MongoDB] Requête NoSql avec MongoDB
    Par thomasmd dans le forum NoSQL
    Réponses: 5
    Dernier message: 20/02/2017, 22h08
  2. Réponses: 0
    Dernier message: 29/07/2012, 11h57
  3. Réponses: 0
    Dernier message: 29/07/2012, 11h57
  4. [WD9] Requête de type SELECT avec une formule mathémathique
    Par jo_la_pasteque dans le forum WinDev
    Réponses: 2
    Dernier message: 22/04/2008, 12h42
  5. Problème avec requête de type Replace
    Par xborgers dans le forum Requêtes
    Réponses: 6
    Dernier message: 05/02/2008, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo