要使用 .NET 驱动程序将文档插入 MongoDB,您有两种选择如何在程序中表示数据:
- 使用 BsonDocument 对象模型(在您的示例代码中)
 
- 使用 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”(如果您愿意,可以让服务器自动添加它)。
另一种选择是定义一组驱动程序可以映射到 BSON 文档和从 BSON 文档映射的 C# 类。
以下是使用 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; }
}