2017-10-13 36 views
1

我有我的MongoDB中的數據,看起來像這樣:如何將MongoDB文檔數據分配到C#中的通用列表?

_id:ObjectId("59d33718050bad45ec6e6f53") 
Timestamp:2017-10-03 15:07:04.145 
ID:"915110933730439169" 
Content:"Turn on the light" 
DateCreated:2017-05-12 00:00:00.000 
UserID:"862903658828017666" 
Username:"Johnny" 

,我只需要在我班的一個「內容」的數據,我必須對那些內容到一個通用的列表中指定。 (我不知道數據會是多少)。所以我在網上看了一下,我已經完成了Bson對象的反序列化到類中,但是我不知道如何在列表中只分配「內容」,因爲只有「內容」才能用於此類中的其他目的。

下面是我這個類的代碼:

class Analysis 
{ 
    public static void RetrieveData() 
    { 
     var client = new MongoClient("mongodb://localhost:27017"); 
     var database = client.GetDatabase("TrainData"); 
     var collection = database.GetCollection<BsonDocument>("Sample1"); 

     List<string> streamdata = new List<string>(); 

     var filter = new BsonDocument(); 
     var cursor = collection.FindAsync(filter).Result; 
     cursor.ForEachAsync(batch => 
     { 
      streamdata.Add(BsonSerializer.Deserialize<string>(batch)); 
     }); 

    } 

public class StreamData 
{ 
    [BsonId] 
    public ObjectId Id { get; set; } 
    public string Content { get; set; } 
    public string ID { get; set; } 
    public DateTime DateCreated { get; set; } 
    public string UserID { get; set; } 
    public string Username { get; set; } 
} 

我能知道在哪裏我丟失或我要爲了讓我將「內容」到泛型列表添加什麼? 謝謝。

回答

2

您可能會嘗試使用投影來獲取「內容」數據。

 var data = collection.Aggregate().Project<BsonDocument>(Builders<BsonDocument>.Projection.Exclude(f => f["_id"]).Include(f => f["Content"])).ToList(); 

     List<string> streamdata = new List<string>(); 

     foreach(var d in data) 
     { 
      streamdata.Add(d["Content"].AsString); 
     } 
+0

它的工作原理!我得到顯示所有的內容!非常感謝你,我一直在尋找這個解決方案一整天! – Corene

相關問題