2011-07-17 5 views
0

J'ai un MongoDB (btw _ J'aime vraiment Mongo) et dans l'une des collections j'essaie d'enregistrer un tableau d'objets. Certains de ces objets seront des chaînes, des booléens, des décimaux. La définition du tableau (en fait il est un dictionnaire) est le suivant:MongoDB Tableau de types mixtes persistants

 public Dictionary<string, object> Fields 
    { 
     get 
     { 
      if (_Fields == null) 
       _Fields = new Dictionary<string, object>(); 
      return _Fields; 
     } 
     set 
     { 
      _Fields = value; 
     } 
    } 

Jusqu'au point où mon code enregistre les données à la base de données, les types des variables du tableau sont corrects. Quand je sauvegarde et regarde les données via MongoHQ ou en code, le tableau revient avec toutes les chaînes.

J'utilise le pilote C# pour cela.

Existe-t-il un moyen de forcer une variable à un type? Est-ce que j'ai râté quelque chose? TIA

Répondre

0

Ce que vous demandez est raisonnable. Il n'y a pas de syntaxe particulière quand il s'agit d'objets - assurez-vous simplement que vos entrées ne sont pas des chaînes. Cependant, dans le code source que j'ai (peut-être vieux), je ne vois pas de mappage pour un dictionnaire dans le sérialiseur BSON. Maintenant, dans BerkeleyDB, vous deviez définir un rappel pour chaque type que vous avez stocké, mais MongoDB à BSON est un peu plus intelligent que cela. J'ai utilisé le pilote https://github.com/atheken/NoRM pour MongoDB. Qu'est-ce que vous utilisez?

Idées:

  • essaient une collection, une liste ou un tableau au lieu d'un dictionnaire

  • linéariser/désérialiser votre dictionnaire/de l'octet []

Questions connexes