2016-09-25 1 views
0

J'essaie de créer un document, puis de le placer dans une base de données mongo. Lors de la création du document, l'un des champs est de type double[]. J'utilise la ligne suivante de code pour ajouter ce champ au document:mettre un double [] dans un champ d'un document

Document loc = new Document(); 
loc.put("position", new Document("type", "Point").append("cords", new double[]{32.05, 35.15})); 

Quand je tente d'imprimer le contenu du champ position i obtenir la sortie suivante: position = Document{{type=Point, cords=[[email protected]}}

J'utilise le Le code suivant pour l'imprimer:

private void printout(Document d){ 
    Set<Entry<String, Object>> ks = d.entrySet(); 
    for (Entry e : ks){ 
     System.out.println(e.getKey() + " = " + e.getValue()); 
    } 
    System.out.println(""); 
} 

La question est pourquoi est-ce que je ne vois pas les nombres réels quand j'imprime les clés et les valeurs de document? Une autre question est, vais-je être en mesure d'utiliser l'opérateur $near pour localiser le document a une position plus proche d'une autre position si je stocke le document de cette façon?

Toute aide serait appréciée, merci.

Répondre

0

Je pense que vous le faites correctement. La raison pour laquelle l'impression ne fonctionne pas n'a rien à voir avec mongodb.

Juste essayer ce qui suit:

double [] cords = new double[]{32.05, 35.15}; 
    System.out.println(cords);//outputs [[email protected] 
    System.out.println(Arrays.toString(cords)); // outputs [32.05, 35.15] 

Une façon lisible des tableaux d'impression utilise Arrays.toString(..). C'est ce qui se passe dans votre boucle for. Mais il sera converti au bon type BSON avant l'insertion.

Il semble également très bien pour être utilisé dans $near requêtes.

+0

Nous vous remercions de votre aide. –

+0

Comment serai-je en mesure d'atteindre le contenu de ce tableau si nécessaire? J'ai essayé d'utiliser 'loc.get (" position "). Get (" cordons ") [0]' mais cela n'a pas fonctionné. –

+0

J'ai essayé de placer le document dans la base de données mongo et j'ai eu l'erreur suivante: 'org.bson.codecs.configuration.CodecConfigurationException: Impossible de trouver un codec pour la classe [D.'. Ce problème concerne le champ tableau. Pourquoi cela se passe-t-il? –

0

Problème résolu. Apparemment, il faut utiliser une liste pour insérer un tableau dans le document mongoDB.

List<Double> cordlist = new ArrayList<Double>(); 
     cordlist.add(32.05); 
     cordlist.add(35.15); 
     loc.put("position", new Document("type", "Point").append("cords", cordlist));