Base de données Mongo enregistrer les données de la Carte
J'ai le code ci-dessous qui fonctionne:
if (aDBCursor.hasNext()) {
DBObject aDbObject = aDBCursor.next();
aDbObject.put("title", "Test Title");
ArrayList<DBObject> department = new ArrayList<DBObject>();
DBObject nested1 = new BasicDBObject();
nested1.put("name", "Department A");
nested1.put("id", 1);
department.add(nested1);
DBObject nested2 = new BasicDBObject();
nested2.put("name", "Department B");
nested2.put("id", 2);
department.add(nested2);
aDbObject.put("department", department);
collection.save(aDbObject);
}
Toutefois, j'ai les données de Service A et B dans une carte comme:
Map<Object,Object> map = new HashMap<Object,Object>();
map.put("1", "Department A");
map.put("2", "Department B");
Quel serait le meilleur/le plus simple est d'enregistrer ces données? Est-il possible de mettre la carte directement dans le mongo DB? Ou aurais-je dû faire une boucle sur la carte?
Les données qui va dans la carte est déjà pris à partir de la base de données comme suit:
String[] values = req.getParameterValues("departments");
Map<Object,Object> map = new HashMap<Object,Object>();
DBCollection collection = database.getCollection("Departments");
BasicDBObject query = new BasicDBObject();
query.put("id", new BasicDBObject("$in", values));
DBCursor cursor = collection.find(query);
Serait encore mieux c'est que je pourrais juste mettre la DBCursor objet dans la base de données.
Des idées?
Merci pour toute aide ou suggestion!
OriginalL'auteur Marc Stevens | 2011-07-24
Vous devez vous connecter pour publier un commentaire.
Java natif types (
int
,float
,String
,Date
,Map,
etc) sera automatiquement encodée à droite BFILS type, de sorte que vous pouvez utiliser unBasicDBObject
de mettre laMap
directement dans le mongo collection:Cependant, il semble que vos
Map
n'ont pas réellement de la structure que vous voulez, de sorte que vous besoin d'une sorte de cartographie de la structure souhaitée. Soit l'utilisation de la cartographie de base qui est intégré dans le pilote java (vous êtes sur la bonne voie en appelantBasicDBObject.put
, et ici d'autres idées), ou utiliser quelque chose comme Morphia pour l'étendue de la cartographie.OriginalL'auteur jtoberon
Ok les gars, j'ai eu de travail.
Aussi simple que cela!
Merci à tous pour vos réponses et suggestions!
OriginalL'auteur Marc Stevens
What would the best/easiest way be to save this data? Is there a way to put the map straight into the mongo DB? Or would I have to loop over the map
?La carte peut être directement ajouté à un BasicDBObject par le constructeur lui-même.Cela peut être directement inséré dans db sans itération.
DBCursor implements iterator, de sorte qu'il ne peut plus être remis en db sans itération
OriginalL'auteur KaKa