2011-05-04 6 views
1

j'ai une collection MongoDB appelée « employés » où il y a des documents comme celui-ci:MongoDB/C# obtenir toutes les valeurs d'une certaine clé dans tous les documents

{ 
    "_id": "4dc077b07701540f34000001", 
    "FullName": "Fullname...", 
    "FirstName": "First name...", 
    "LastName": "Last name...", 
    "Title": "Title... ", 
    "Location": "Location...", 
    "Customer": "Customer...", 
    "Phone": "Phone...", 
    "CellPhone" : "Cellphone...", 
    "EMail": "E-mail..." 
} 

Je suis en train de faire une méthode qui fait un foreach boucle sur tous les documents de la collection et place chaque valeur de la clé FullName et l'ajoute à une liste.

 List<string> listed = new List<string>(); 
     IMongoCollection collection = _db.GetCollection("employees"); 
     //var list = collection.FindAll().Documents.ToList(); 
     var persons = from p in collection.AsQueryable() 
         select p["FullName"]; 
     //foreach (var lt in list) 
     foreach (var name in persons) 
     { 
      //listed.Add(lt["FullName"].ToString()); 
      listed.Add(name.ToString()); 
     } 
     return listed; 

Ci-dessus, le code que je l'ai essayé, le code retourne a commenté un NullReferenceException, le code décommentée renvoie le document entier dans une liste.

Ma question est: Quel genre de requête dois-je faire pour obtenir chaque valeur pour chaque clé appelée "FullName" dans une liste? J'utilise la version stable actuelle MongoDB sur Windows 7, et j'utilise le pilote de la communauté MongoDB-CSharp. Toute aide et pointeurs sont appréciés!

Répondre

3
var collection = _db.GetCollection("employees"); 
return (from p in collection.AsQueryable() 
     select p["FullName"]).toList(); 

Doit le faire?

Cependant, vous devriez envisager d'utiliser les méthodes génériques comme on le voit dans:

http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-GetCollectionmethod

+0

La seule façon que je peux revenir que si je ne: Liste publique MethodName() Mais je besoin d'une liste de valeurs, pas d'objets. – bleakgadfly

+0

(à partir de p dans collection.AsQueryable() select (String) p ["FullName"]). ToList() Est-ce que cela fonctionne? –

+0

Je reçois cette exception: "Impossible de lancer l'objet de type 'MongoDB.Linq.MongoQuery' pour taper 'System.Linq.IQueryable'1 [System.String]'." en utilisant cette méthode de retour: public Liste GetPersons() – bleakgadfly

Questions connexes