如何将MongoDB文档数据分配到C#中的通用列表?

时间:2017-10-13 19:18:55

标签: c# mongodb

我在MongoDB中有我的数据,如下所示:

_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; }
}

我可以知道我在哪里丢失了或者我还要添加什么以便让我插入&#34;内容&#34;进入通用列表? 谢谢。

1 个答案:

答案 0 :(得分: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);
        }