如果为 null 或为空,则不插入字段

Do not insert field if null or empty

我有一个 C# class 有一些字段,其中一些是空的。那些为空的我不想用空值插入到数据库中。我根本不想将它们插入数据库。 我该如何实现?

class User
{
    public string FirstName;
    public string LastName;
    public string MidName;
}

并非每个用户都有一个 MidName,但是 Mongo 将 MidName 字段上的空值插入到数据库中。

使用恰当命名的 [BsonIgnoreIfNull] attribute:

class User
{
    public string FirstName;
    public string LastName;
    [BsonIgnoreIfNull]
    public string MidName;
}

确保您足够早地注册新的会议包。如果在您注册新的会议包之前已经映射了 类,则不会更新它们。

这是我的测试代码:

public class C
{
    public int Id { get; set; }
    public string S { get; set; }
}

public static class Program
{
    public static void Main(string[] args)
    {
        ConventionRegistry.Register(
            "Ignore null values",
            new ConventionPack
            {
                new IgnoreIfNullConvention(true)
            },
            t => true);

        var client = new MongoClient("mongodb://localhost");
        var server = client.GetServer();
        var database = server.GetDatabase("test");
        var collection = database.GetCollection<C>("test");

        collection.Drop();
        collection.Insert(new C { Id = 1, S = null });

        Console.WriteLine("Press Enter to continue.");
        Console.ReadLine();
    }
}

以下文档已插入数据库:

db.test.find()

{ "_id" : 1 }

来源:https://groups.google.com/forum/#!topic/mongodb-user/7-NFXBNeEXs