0

MongoDb に BsonDocument のコレクションがあり、InfoData 形式でデータを保存します

public class InfoData
{
    public BsonObjectId Id { get; set; }
    public int RowId { get; set; }
    public DateTime Date { get; set; }
    public string GUID { get; set; }
    public BsonDocument ProductData { get; set; }
}

以下はサンプルデータです。

/* 0 */
    {
      "_id" : ObjectId("527b7894e9374f1678f3493d"),
      "RowId" : 37883504,
      "Date" : ISODate("2013-07-01T00:00:02Z"),
      "GUID" : "e776cce3-4e22-41c2-94f3-e71bcda0498d",
      "ProductData" : 
      {
        "ping" : [""],
        "ViewPath" : ["All File and Registry\\CollectedFiles"],
        "PingErrors" : ["0"],
        "PingSeq" : ["1"]
      }
    }

    /* 1 */
    {
      "_id" : ObjectId("527b7894e9374f1678f3493e"),
      "RowId" : 37883505,
      "Date" : ISODate("2013-07-01T00:00:07Z"), 
      "GUID" : "d9681035-69e3-4abc-ba24-ba83ba35a87b",
      "ProductData" : 
      {
        "Session_Id" : ["d9681035-69e3-4abc-ba24-ba83ba35a87b"],
        "DotNetCLR" : ["Microsoft"],
        "RunType" : ["gui"],
        "PingSeq" : ["0"],
        "PingErrors" : ["0"],
                          "DotNet" : ["v2.0.50727"],
        "Machine_Id" : ["f2851af6-505d-45ce-adc5-3ef973d2fa1d"],
        "ping" : [""]
      }
    }

    /* 2 */
    {
      "_id" : ObjectId("527b7894e9374f1678f3493f"),
      "RowId" : 37883507,
      "Date" : ISODate("2013-07-01T00:00:19Z"),
      "GUID" : "d9681035-69e3-4abc-ba24-ba83ba35a87b",
      "ProductData" : 
      {
        "PingErrors" : ["0"],
        "OsName" : ["Windows 7 Home Premium Service Pack 1 64-bit"],
        "PrimaryWidth" : ["1366"],
        "DotNet" : ["v2.0.50727", "v3.0", "v3.5"],
        "ping" : [""],
        "PrimaryHeight" : ["768"],
        "OsArch" : ["Win64"],
        "OsType" : ["Win7"],
        "OsPlatformType" : ["Workstation"],
        "SymcNetwork" : ["external"],
        "OsEnglishName" : ["English (United States)"],
        "OsIsoLang" : ["en"],
        "PingSeq" : ["1"],
        "DotNetCLR" : ["Microsoft"],
        "DotNetMax" : ["v3.5"]
      }
    }

以下のクエリを使用して、BsonDocument である ProductData のコレクションを取得します。

 MongoCollection mCollection = ObjectMongoDatabase.GetCollection("Telnet");
 var sortedData = (from a in mCollection.AsQueryable<InfoData>()
                    select a.ProductData);

私の質問 :

sortedData を照会したい

  • 「DotNet = v2.0.50727」の製品データのリストを取得する
  • 「日付」が特定の範囲内にある製品データのリストを取得します。[例: 2013 年 1 月 12 日から 2013 年 1 月 17 日]

**以下の関数を使用して BsonDocument を生成するためのキー値データ

PingErrors|0
OsName|Windows 7 Home Premium Service Pack 1 64-bit
DotNet|v2.0.50727
DotNet|v3.0
DotNet|v3.5
OsArch|Win64
DotNetCLR|Microsoft
DotNetMax|v3.5

** 上記のように、この関数はキーと値のペアの形式で入力を取得します ** 他のケースではキーと値のペアが異なる場合があるため、この関数を作成しました。つまり、いくつかの値を追加したり削除したりできます。

    private BsonDocument MakeBsonDocument(List<string> keyValueData)
    {
        Dictionary<string, List<string>> dic = new Dictionary<string, List<string>>();

        List<string> ValuePair = null;
        foreach (string kvp in keyValueData)
        {
            string[] keyValuePair = kvp.Split('|');
            if(dic.ContainsKey(keyValuePair[0].ToString()))
            {
                 ValuePair.Add(keyValuePair[1].ToString());
            }
            else
            {
                ValuePair = new List<string>();
                ValuePair.Add(keyValuePair[1].ToString());

                dic.Add(keyValuePair[0].ToString(), ValuePair);
            }
        }

        BsonDocument bDoc = new BsonDocument();
        bDoc.AddRange(dic);
        return bDoc;
    }
4

0 に答える 0