如果为null或为空,请勿插入字段

时间:2015-01-09 09:30:52

标签: c# mongodb

我有一个带有一些字段的C#类,其中一些是null。那些为null我不想插入带有null值的db。我根本不希望它们插入到db中。 我如何实现这一目标?

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

并非每个用户都有MidName,但是Mongo会在MidName字段中插入带有空值的db。

2 个答案:

答案 0 :(得分:10)

使用恰当命名的[BsonIgnoreIfNull] attribute

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

答案 1 :(得分:9)

确保您尽早注册新的约定包。如果在注册新约定包之前已经映射了任何类,则不会更新它们。

这是我的测试代码:

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