簡體   English   中英

如何在c#中將嵌套集合插入到mongo db

[英]how to insert nested collection in c# to mongo db

我想使用C#創建這樣的集合

   Agent_name: {
    f: "vbv",
    l: "vbvbv"
    },
   "Agent_LoginSessionId" : "",
   "Agent_GroupCode" : "",
   "Agent_dtmCreated" : "",
   "Agent_dtmLastLogin" : "",
   "Agent_strIsActive" : ""

    stamps: {
     ins: "",
     upd: "",
     createUsr: "",
     updUsr: "",
     Ins_Ip: "",
     Upd_IP: ""

 }

我的C#代碼是這樣的:

MongoCollection<BsonDocument> Agents = mydb.GetCollection<BsonDocument>("Agents");
       BsonDocument collectionAgent = new BsonDocument {
                   { "Agent_Login", Aid },  
                   {"Agent_Pwd",Apwd},
                   {"Agent_Rpwd",Arpwd},

                   Agent_Name:     
                      { "f", Afname},
                      {"l", Alname} ,


                   {"Agent_LoginSessionId",""},
                   {"Agent_GroupCode",AgroupId},
                   {"Status",AStastus}
                  };
       Agents.Insert(collectionAgent)

在C#中如何實現呢? 它需要任何特定的驅動程序來安裝。 請提出一些建議?

要使用.NET驅動程序將文檔插入MongoDB,您有兩種選擇方式來表示程序中的數據:

  1. 使用BsonDocument對象模型(如您的示例代碼中所示)
  2. 使用C#類,讓驅動程序將它們映射到BSON文檔或從BSON文檔映射

使用BsonDocument對象模型創建復雜的BSON文檔可能會變得很復雜,這主要是因為涉及到所有嵌套。 這是使用BsonDocument對象模型將文檔插入集合的方法:

var bsonDocument = new BsonDocument
{
    { "_id", ObjectId.GenerateNewId() },
    { "Agent_name", new BsonDocument
        {
            { "f", "vbv" },
            { "l", "vbvbv" }
        }
    },
    { "Agent_LoginSessionId", "" },
    { "Agent_GroupCode", "" },
    { "Agent_dtmCreated", "" },
    { "Agent_dtmLastLogin", "" },
    { "Agent_strIsActive", "" },
    { "stamps", new BsonDocument
        {
            { "ins", "" },
            { "upd", "" },
            { "createUsr", "" },
            { "updUsr", "" },
            { "Ins_Ip", "" },
            { "Upd_Ip", "" }
        }
    }
};
collection.Insert(bsonDocument);

我在文檔中添加了“ _id”元素,因為所有MongoDB文檔都將具有“ _id”(如果願意,您可以讓服務器自動添加它)。

另一種選擇是定義一組C#類,驅動程序可以與BSON文檔進行映射。

這是使用C#類插入同一文檔的方法:

var agent = new Agent
{
    Id = ObjectId.GenerateNewId(),
    Name = new AgentName { First = "vbv", Last = "vbvbv" },
    LoginSessionId = "",
    GroupCode = "",
    Created = "",
    LastLogin = "",
    IsActive = "",
    Stamps = new Stamps
    {
        Inserted = "",
        Updated = "",
        CreateUser = "",
        UpdateUser = "",
        InsertIPAddress = "",
        UpdateIPAddress = ""
    }
};
collection.Insert(agent);

這是C#類的定義。 我已經使用.NET命名約定作為屬性,並使用[BsonElement(“ ...”)]屬性來指定BSON文檔中元素的相應名稱:

public class Agent
{
    public ObjectId Id { get; set; }
    [BsonElement("Agent_name")]
    public AgentName Name { get; set; }
    [BsonElement("Agent_LoginSessionId")]
    public string LoginSessionId { get; set; }
    [BsonElement("Agent_GroupCode")]
    public string GroupCode { get; set; }
    [BsonElement("Agent_dtmCreated")]
    public string Created { get; set; }
    [BsonElement("Agent_dtmLastLogin")]
    public string LastLogin { get; set; }
    [BsonElement("Agent_strIsActive")]
    public string IsActive { get; set; }
    [BsonElement("stamps")]
    public Stamps Stamps { get; set; }
}

public class AgentName
{
    [BsonElement("f")]
    public string First { get; set; }
    [BsonElement("l")]
    public string Last { get; set; }
}

public class Stamps
{
    [BsonElement("ins")]
    public string Inserted { get; set; }
    [BsonElement("upd")]
    public string Updated { get; set; }
    [BsonElement("createUsr")]
    public string CreateUser { get; set; }
    [BsonElement("updUser")]
    public string UpdateUser { get; set; }
    [BsonElement("Ins_Ip")]
    public string InsertIPAddress { get; set; }
    [BsonElement("Upd_Ip")]
    public string UpdateIPAddress { get; set; }
}

暫無
暫無

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

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