MongoDB / C#获取所有文档中某个键的所有值

时间:2011-05-04 20:01:43

标签: c# linq list mongodb mongodb-.net-driver

我有一个名为“employees”的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-key的每个值放入并将其添加到List中。

        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”的每个键的每个值都放入列表中?我在Windows 7上使用当前的MongoDB稳定版本,我正在使用MongoDB-CSharp社区驱动程序。所有的帮助和指示表示赞赏!

1 个答案:

答案 0 :(得分:3)

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