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] Problème d'enregistrement _id


Sujet :

NoSQL

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut [MongoDB] Problème d'enregistrement _id
    Bonsoir,

    je débute avec mongodb, j'ai crée un document par la console voici ce que ce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    > b = {matiere:"electronique"}
    { "matiere" : "electronique" }
    > db.sommaire.insert(b)
    > db.sommaire.find()
    { "_id" : ObjectId("58682b4d07a3fc643ed18632"), "matiere" : "electronique" }
    je tente d'enregister la même chose mais sous node en webservice, voici le fichier server.js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    var express = require("express"),
        bodyParser = require("body-parser"),
        port =  8000,
        app = express();
     
    var MongoClient = require("mongodb").MongoClient;
     
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json());
     
     
    var router = express.Router();
     
    router.route('/').get(function(req, res){
            MongoClient.connect("mongodb://localhost/book", function(error, db) {
            if (error) throw error;
     
            db.collection("sommaire").find().toArray(function (error, results) {
     
            if (error) throw error;
            console.log(results);    
            //res.writeHead(200, {'Content-Type': 'text/json'});
            //res.end(results);
             res.status(200).json(results);
     
           });
        });
     
    });
     
     
    router.route('/matiere').post(function(req, res){
     
            MongoClient.connect("mongodb://localhost/book", function(err, db) {
             if (err) throw err;
      console.log("Connected to Database");
     
      //simple json record
        var document = {"matiere":"dessin"};
     
    	//insert record
    	db.collection('sommaire').save(document, function(err, records) {
    		if (err) throw err;
     
    	});
    });
     
    });
     
     
    app.use('/api',router);
    app.listen(port, function(){
        console.log("ecoute", port);
    } );

    l'enregistrement à bien été pris en compte mais la place des _id ne sont pas au même endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    > db.sommaire.find()
    { "_id" : ObjectId("58682b4d07a3fc643ed18632"), "matiere" : "electronique" }
    { "matiere" : "reseau", "_id" : ObjectId("58683c1679159807b4239b5b") }
    { "matiere" : "dessin", "_id" : ObjectId("58683ccc2a16930822ab4209") }
    { "matiere" : "dessin", "_id" : ObjectId("58683d1b2a16930822ab420a") }
    >
    comment fait t'on pour que l'enregistrement en console ou par webservice soit la même chose ?
    merci de vos réponse.

  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
    Points : 926
    Points
    926
    Par défaut
    Bonjour,

    Tout comme toi, je débute en MongoDB. Je n'ai pas travaillé en Node.js, mais en Python avec le driver PyMongo, et j'ai le même problème que toi.

    D'après ce que j'ai compris, MongoDB respecte l'ordre des clés (des champs si tu préfères). Je n'arrive pas à savoir si c'est une spécificité du JSON, ou bien une spécificité de MongoDB qui stocke les documents JSON au format BSON.

    Par contre, lorsque tu utilises des langages comme Javascript ou Python, ce genre de langage n'impose pas forcément que l'ordre des champs soit conservé.

    Voici une URL qui pourrait t'aider :
    http://stackoverflow.com/questions/1...-for-a-mongodb

    On y parle de Google V8 comme moteur Javascript de Node.js, en précisant que cette implémentation préserve l'ordre des champs.

    En espérant que cela puisse t'aider, car je n'arrive pas à trouver d'autres informations sur ce sujet.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Merci beaucoup de cette explication, au moin j'ai pas besoin de tourner en rond et chercher le pb,
    je pense que je vais plutôt utiliser du mysql node pour les données.

  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
    Points : 926
    Points
    926
    Par défaut
    Si cela vous intéresse, sur le site de formation de MongoDB, vous pouvez suivre gratuitement des formations :

    https://university.mongodb.com

    Il y a notamment cette formation pour vous : M101JS: MongoDB for Node.js Developers

    Moi j'ai suivi la formation plus généraliste : M101P: MongoDB for Developers

    Dans cette formation, au chapitre 1 Introduction, dans la 23ième vidéo intitulée "Python, Working with Dicts", ce problème était abordé lorsque l'on utilise les dictionnaires Python.

    Il est fort possible que ce problème soit aussi traité dans une des vidéos MongoDB for Node.js

Discussions similaires

  1. probléme d'enregistrement avec les chexkbox.
    Par pmboutteau dans le forum ASP
    Réponses: 16
    Dernier message: 18/10/2005, 15h05
  2. Réponses: 1
    Dernier message: 25/09/2005, 11h09
  3. Problème d'enregistrement de DLL
    Par chleuh dans le forum Langage
    Réponses: 5
    Dernier message: 01/07/2005, 10h30
  4. problème d'enregistrement de textarea dans bdAccess
    Par pmboutteau dans le forum ASP
    Réponses: 23
    Dernier message: 04/04/2005, 15h10
  5. Problèm d'enregistrement
    Par ludogim dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/06/2004, 11h41

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