[英]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.