我在使用带有C#的MongoDB时遇到了一个问题,如果我发送一个对象存储在mongo中,则不存储任何= 0的整数值。
例如,如果我有这样的课程:
public class Data
{
public int x { get; set; }
public int y { get; set; }
}
然后我创建了一个值为x = 1和y = 0的实例并将其存储在mongo中,结果将是:
{
"x" : 1
}
而我想要的是:
{
"x" : 1,
"y" : 0
}
我觉得我必须遗漏一些东西,因为我找不到其他人有这个问题。
我需要0值的原因是因为我需要将它与mongo聚合函数一起使用。
感谢。
答案 0 :(得分:0)
我无法重现您的报道内容。我使用您的Data类创建了一个测试程序,并将文档存储在MongoDB中,如下所示:
var document = new Data { x = 1, y = 0 };
collection.Insert(document);
然后我使用MongoDB shell来查看插入到数据库中的内容:
> db.data.find()
{ "_id" : ObjectId("550c7542f266222543e1d16d"), "x" : 1, "y" : 0 }
>
它确实存储了值为0的y。
您是否配置了可能覆盖0值序列化的任何约定?
答案 1 :(得分:0)
您可以为您的 Data 类注册类映射,如下所示,以指示 mongodb 存储 y 的默认值。
BsonClassMap.RegisterClassMap<Data>( cm =>
{
cm.AutoMap();
cm.MapMember(d => d.y).SetIgnoreIfDefault(false);
});