检索对象的集合

时间:2016-04-14 08:13:17

标签: c# mongodb

我无法弄清楚如何在asp.net mvc 5中的mongoDB上创建一个Read函数。我在控制器中有这部分代码:

 public HomeController() {
           var mongoClient = new MongoClient(Settings.Default.EmployeesConnectionString);
           var database= mongoClient.GetDatabase("football");
           var coll = database.GetCollection<BsonDocument>("Footballers");

正如您所看到的,我将数据库和集合路径保存在变量中,因此更容易导航。我也测试了它,我设法在mongodb创建一个新的集合,所以我认为这是正确的。我的问题是我应该进一步写什么来回收整个集合?它应该在列表中吗?之后我会尝试将其退回到网页中,所以如果您对此有任何评论,请告诉我。

3 个答案:

答案 0 :(得分:3)

管理以解决这个问题。

var coll = database.GetCollection<BsonDocument>("Footballers");

        var documents = coll.Find(new BsonDocument()).ToList();
        for(int i=0; i<documents.Count(); i++){
            Console.WriteLine(documents[i]);
        }
        Console.ReadLine();

为文档变量应用了一个简单的for循环,并按预期打印了所有内容。

答案 1 :(得分:1)

2.x API使用异步方法。您可以使用1.x API,但可能您不想这样做。

基本上有3种方法可以检索数据: ToListAsync()

var list = await col.Find(new BsonDocument()).ToListAsync();
foreach (var doc in list)
{
    Console.WriteLine (doc.ToJson());
}

ForEachAsync()

await col.Find(new BsonDocument())
    .ForEachAsync((doc,i) => { 
      Console.WriteLine ("Doc #{0}:{1}",i,doc);
    });

ToCursorAsync()

using (var cursor = await col.Find(new BsonDocument()).ToCursorAsync())
{
 while (await cursor.MoveNextAsync())
 {
  foreach (var doc in cursor.Current)
  {
    Console.WriteLine (doc.ToJson());
  }
 }
}

这里最后一个ToCursorAsync使用游标,我认为它是你想要在网页上拥有的游标。而不是检索整个数据,而是获取数据块。

答案 2 :(得分:-1)

为您提供GenericRecord的结果,如

IEnumerable globalRelordList = MongoClient.GetDatabase(“football”);

代码:

char[] commaSeperated = new char[] { ',' };
string[] auditRecordJSON = G.Data.Split(commaSeperated, 2);
auditRecordDTO audit = (jsonParser.JsonDeserialize<AuditRecord>("{" +auditRecordJSON[1]));

您的GenericRecord类具有以下属性:

public class GenericRecord{}
{   public string Id { get; set; }
    public string Data { get; set; }
    public string CollectionName { get; set; }
    public RecordFormat Format { get; set; }
}

此处auditRecordDTO是C#DTO,它与您的DTO具有相同的JSON字段。