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] Node $and et $not


Sujet :

NoSQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 24
    Points : 35
    Points
    35
    Par défaut [MongoDB] Node $and et $not
    Hello

    Voici ma requête pour sortir tous les mots d'un dico qui ne contiennent ni de A, ni de B :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dico.find({$and:[{mot: {$not: /A/}},{mot: {$not: /E/}}]}).limit(10)
    Cela fonctionne très bien, mais n'y a t'il pas plus simple que ce mélange de $and et de $not ?

    Merci

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 24
    Points : 35
    Points
    35
    Par défaut Ma solution
    En fait, j'avais oublié l'existence de la |
    Voici ma requête complète, peut-être peut-on l'améliorer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dico.find({
        $and: [{
            mot: { $not: /S|E/} // interdites
        }, {
            mot: { $regex: 'A.*D.*R{2}' } // obligatoires
        }, {
            mot: {$regex: '^C.*D$'} // début et fin
        }
        ]
    })

  3. #3
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut Pistes possibles
    Je n'ai pas une réponse pleinement satisfaisante à vous apporter mais vous entendez par "améliorer" le fait d'augmenter la rapidité de la requête ou bien que ce qui s'affiche en résultats ne correspond pas à ce que vous attendez?
    S'il s'agit de la rapidité, de ma petite expérience, la création d'index peut être utile s'il s'agit d'un champ que vous allez très souvent utiliser dans vos requêtes, ou que cette requête même est très fréquemment utilisée. Cela dit il faut utiliser ce moyen avec parcimonie.
    Ensuite ce qui peut vous aider à améliorer la vitesse de vos requêtes c'est de comprendre leur fonctionnement avec "explain". Il y a quelques tutos Youtube qui vous explique plus ou moins bien ce que c'est selon l'auteur. Cette commande vous permet en tout cas de connaître l’efficience de votre requête. Si je m'en réfère à
    , les champs "nscannedObjets": 0 et "nscanned"1, au lieu de "nscannedObjets": 1 et "nscanned"1, sont synonymes d'efficience.
    On a quelques autres pistes à étudier avec ce site. Et j'imagine que là ce sont que les plus simples.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2014, 11h16
  2. Project Folder already exists and is not empty
    Par fcboumi13 dans le forum Android
    Réponses: 2
    Dernier message: 03/05/2012, 12h58
  3. does not exist and was not trapped in __call()
    Par lordlifen dans le forum MVC
    Réponses: 4
    Dernier message: 25/05/2011, 10h55
  4. [2.1.2] .rptdesign has error and can not be run
    Par stratocasters dans le forum BIRT
    Réponses: 4
    Dernier message: 27/10/2008, 16h37
  5. Réponses: 4
    Dernier message: 18/01/2006, 21h19

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