我有一个带有一些字段的C#类,其中一些是null。那些为null我不想插入带有null值的db。我根本不希望它们插入到db中。 我如何实现这一目标?
class User
{
public string FirstName;
public string LastName;
public string MidName;
}
并非每个用户都有MidName,但是Mongo会在MidName字段中插入带有空值的db。
答案 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