簡體   English   中英

如何在C#中列出mongodb文檔的所有子文檔

[英]How to list all subdocuments of a mongodb document in c#

我想在C#的datagridview中顯示mongodb文檔的所有嵌入式子文檔。 我以為應該沒有那么困難,但是到目前為止找不到任何類似的問題和有用的答案。 我使用下面的docs.mongodb.com示例:

{   
   _id: "joe",
   name: "Joe Bookreader",
   addresses: [
                {
                  street: "123 Fake Street",
                  city: "Faketon",
                  state: "MA",
                  zip: "12345"
                },
                {
                  street: "1 Some Other Street",
                  city: "Boston",
                  state: "MA",
                  zip: "12345"
                }
              ]
 }

不幸的是,它無法找到文檔,然后逐步瀏覽子文檔數組,例如:

var doc = Builders<BsonDocument>.Filter.Eq("_id", "joe");
foreach (var a in doc.addresses)
{
   dataGridView1.Rows[0].Cells[0].Value = a["street"].ToString();
   ...
}

僅嘗試包含子文檔並不能將我帶到子文檔級別:

var result = await collection.Find(new BsonDocument("_id", "joe")).Project(Builders<BsonDocument>.Projection.Include("addresses").Exclude("_id")).ToListAsync();

有什么建議么?

發現結果應視為嵌套數組。 因此,遍歷元素可以:

    while (result[0]["addresses"][i]["_id"] != null)
    {
        DataRow dr = dtprops.NewRow();
        foreach (DataGridViewColumn col in dataGridView1.Columns)
        {
            try { dr[col.DataPropertyName] = result[0]["addresses"][i][col.DataPropertyName]; }
            catch { };
        }
        dtprops.Rows.Add(dr);
        i++;
    };
    dataGridView1.DataSource = dtprops;

我不喜歡try catch部分,但是還沒有找到如何避免不存在的文檔字段的方法。 但這是一個不同的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM