首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c#中插入嵌套集合到mongo

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

Stack Overflow用户
提问于 2013-05-07 11:35:30
回答 1查看 4.9K关注 0票数 1

我想使用c#创建这样的集合

代码语言:javascript
复制
   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#代码是这样的:

代码语言:javascript
复制
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#中如何实现这一点?它需要任何特定的驱动程序来安装。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-05-07 15:52:57

要使用MongoDB驱动程序将文档插入到.NET中,您可以选择两个选项来表示程序中的数据:

  1. 使用BsonDocument对象模型(如示例代码中所示)
  2. 使用C#类,并让驱动程序将它们映射到BSON文档

使用BsonDocument对象模型创建复杂的BSON文档可能会变得非常复杂,这主要是因为所涉及的嵌套问题。下面是如何使用BsonDocument对象模型将文档插入到集合中:

代码语言:javascript
复制
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文档和BSON文档。

下面是如何使用C#类插入同一个文档:

代码语言:javascript
复制
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文档中元素的对应名称:

代码语言:javascript
复制
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; }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16417988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档