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

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

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

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

使用恰当命名的[BsonIgnoreIfNull]属性 :

 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("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