MongoDB / C # получить все значения определенного ключа во всех документах - PullRequest
1 голос
/ 05 мая 2011

У меня есть коллекция MongoDB под названием «сотрудники», где есть такие документы:

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

Я пытаюсь создать метод, который выполняет цикл foreach для всех документов в коллекции, помещает каждое значение ключа FullName и добавляет его в список.

        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;

Выше приведен код, который я пробовал, код с комментариями возвращает исключение NullReferenceException, код без комментариев возвращает весь документ в списке.

У меня вопрос: какой запрос я должен выполнить, чтобы получить каждое значение для каждого ключа с именем «FullName» в списке? Я использую текущую стабильную версию MongoDB в Windows 7 и использую драйвер сообщества MongoDB-CSharp. Вся помощь и указатели приветствуются!

1 Ответ

3 голосов
/ 05 мая 2011
var collection = _db.GetCollection("employees");
return (from p in collection.AsQueryable()
         select p["FullName"]).toList();

Должен ли это сделать?

Однако вы должны рассмотреть возможность использования общих методов, как показано в:

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

...