2017-10-13 7 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

関連する問題