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 :

Java & mongodb contrôle sur 3 champs


Sujet :

NoSQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Java & mongodb contrôle sur 3 champs
    Bonjour,

    J'ai cette table mongodb :

    -------------

    nom : Roberto Rivellino

    date_debut : 01-02-1965

    date_fin : 25-08-1981

    --------------

    nom : Ronaldo Da Lima

    date_debut : 01-01-1993

    date_fin : 25-07-2011

    -----------

    1) 1er problème : comment je peux mettre la date avec ce format( jj-mm-yyyy) saisie et affichage??????
    Après est ce que je peux faire cette comparaison : jj-mm-yyyy(date_debut) < jj-mm-yyyy(saisie) < jj-mm-yyyy(date_fin)

    2) 2ème problème :

    J'ai un formulaire de recherche qui contient 2 champs :

    * Nom :
    * date :

    Objectif : je donne un exemple : j'insère dans le formulaire de recherche :

    nom : Maradona (n'existe pas)
    date : 10-02-1978 (existe : 01-02-1965 < 10-02-1978 < 25-08-1981)

    donc normalement il ne m'affiche aucun enregistrement(puisque la 2ème est vraie mais la première est fausse).

    Le problème comment coder tout ça en jsp?

    J'ai fait un essai :





    try {

    MongoClient mongo = new MongoClient( "localhost" , 27017 );

    DB db = mongo.getDB("players_database");

    DBCollection table = db.getCollection("players_table");


    String date_recuperer = request.getParameter("date");
    String nom_recuperer = request.getParameter("nom");

    BasicDBObject requete = new BasicDBObject();

    List<BasicDBObject> obj = new ArrayList<BasicDBObject>();


    BasicDBObject query = new BasicDBObject();

    query.put("date_recupere", BasicDBObjectBuilder.start("$gte", "date_debut").add("$lte", "date_fin").get());
    query.put("nom", "nom_recupere");




    requete.put("$and", obj);


    DBCursor cursor = table.find(query);





    while (cursor.hasNext()) {


    out.println(cursor.next()); out.print("<br>"); out.print("<br>");
    }

    } catch (Exception e) {

    e.printStackTrace();
    }

    mais ça n'a pas marché!!!!!!!!


    3) 3ème et dernier problème :

    Comment faire pour que le moteur mongodb ignore les minuscules et majuscules dans la recherche(du nom par exemple)?


    -------------------

    Je vous remercie d'avance.

  2. #2
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    1) Pour les dates, ca n'a pas de rapport avec Mongodb. Tu gères ton affichage sur ton formulaire comme tu l'entends, ce qui est important par contre c'est bien de stocker un objet Date dans mongo (qui le supporte très bien) et non une chaine de caractère.
    Sur un champ de type date les opérations de comparaisons fonctionnent, si tu donnes aussi un objet date dans ta requête.

    2) Sur la manière d'interroger Mongo, perso je te conseille de prendre une api au dessus du driver pour te faciliter l'écriture :
    - soit jongo si tu es à l'aise avec le mongoshell
    - soit morphia si tu n'aime pas le json
    - soit spring data si tu as une stack spring (mais ca ne semble pas être ton cas vu que tu code dans la jsp )
    Je veux bien te guider pour le requêtage avec l'un de ces trois. Perso j'utilise pas l'api avec le driver de base, trop verbeux a mon gout

    3) Mongo n'est pas très adapté pour les recherches textuelles mais il y a des solutions que je détaille dans cet article :
    http://www.eventuallycoding.com/inde...-avec-mongodb/

    Si tu as peu de données, je te conseille la regexp. Si tu as de la donnée alors choisis la solution avec une duplication de tes attributs en lowercase.

    a+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Merci "hugo123" pour tes conseils!! Ton article est super intéressant!!!
    Je ne mets pas "résolu" pour le moment le temps que j'applique
    tes conseils et je trouve les bonnes solutions pour mes besoins.

    Je vous tiendrais au courant. Merci.

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/02/2012, 09h15
  2. contrôle sur plusieurs champs Input
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/03/2008, 12h33
  3. contrôle sur 2 champs dates
    Par jeanfi77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/05/2007, 17h56
  4. Contrôle sur les champs d' une pages JSP
    Par amine1980 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/03/2007, 08h38
  5. contrôle sur un champ dans un formulaire
    Par yoline dans le forum Access
    Réponses: 6
    Dernier message: 01/10/2005, 19h23

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