簡體   English   中英

c#MongoDB從字段中選擇字段列表

[英]c# MongoDB select list of fields from a field

假設我將此文檔結構存儲在MongoDB數據庫中。

{
    "_id" : ObjectId("54f131f3c4ca7b044eb11171"),
    "services" : "gegsg",
    "validCertificateOrLicense" : {
        "title" : "asfasf",
        "number" : "fasfsdf",
        "dateIssued" : "fsdffsdfsdf",
        "validUntil" : "fsdfsdfd",
        "issuingAgency" : "fsdfsd"
    }
}

我想在我的Binding中列出要在我的DataGrid上使用的那些字段,我試圖使用在幾個堆棧問題上發布的解決方案。 但是沒有一個工作,我試圖檢查使用Console.WriteLine(BindList.Count)來檢查查詢是否有效。

class facultyData
{

    public ObjectId _id { get; set; }
    public string services { get; set; }
    public List<certification> validCertificateOrLicense { get; set; }

}

class certification
{
    public string title { get; set; }
    public string number { get; set; }
    public string dateIssued { get; set; }
    public string validUntil { get; set; }
    public string issuingAgency { get; set; }
}

這是我嘗試過的解決方案之一。

  var query =  collection.AsQueryable<facultyData>()
             .Where(c => c.validCertificateOrLicense.Any(d => d.stores.Count() == 1);

或者我的ToList代碼可能有問題

List<facultyData> acadList = query1.ToList<facultyData>();   
        BindingList<facultyData> acadBinding = new BindingList<facultyData>(acadList);

我認為這會奏效

 var acadList = Database.GetCollection<facultyData>("facultyData").AsQueryable().Where(f => f.validCertificateOrLicense.Any()).ToList();

您的類facultyData包含validCertificateOrLicense字段中的認證列表。 但是,DB中的文檔結構僅包含validCertificateOrLicense字段中的單個證書。

如果數據庫中的文檔結構如下,則查詢應該有效

{
    "_id" : ObjectId("54f131f3c4ca7b044eb11171"),
    "services" : "gegsg",
    "validCertificateOrLicense" : [{
        "title" : "asfasf",
        "number" : "fasfsdf",
        "dateIssued" : "fsdffsdfsdf",
        "validUntil" : "fsdfsdfd",
        "issuingAgency" : "fsdfsd"
    }]
}

注 - validCertificateOrLicense字段現在包含一系列certification子文檔。

或者,您可以更改c#實體以匹配數據庫中的現有文檔結構。 您的facultyData對象如下所示

class facultyData
{

    public ObjectId _id { get; set; }
    public string services { get; set; }
    public certification validCertificateOrLicense { get; set; }

}

注 - 現在validCertificateOrLicense字段僅包含一個certification文檔。

暫無
暫無

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

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